ファイルブラウザーコントロールの依存関係バインディングのトラブルシューティング
カスタムファイルブラウザー制御を構築するときに、ファイルを選択すると、コントロールの内部テキストボックスが更新されますが、親ビューモデルのSelectedFile
プロパティへの変更を伝播できない場合に一般的な問題が発生します。 これは、DependencyProperty
および標準的なバインディングを使用している場合でも発生します。
を設定することに起因します。
DataContext
この自己参照は、親から継承された
<code class="language-csharp">DataContext = this;</code>
解決策:DataContext
バインディングDataContext
ソリューションには、UserControlのXAML内のバインディングを変更して、親ビューモデルを明示的にターゲットにします。 を使用して、視覚ツリーを通過します:RelativeSource
この改訂されたバインディングにより、usercontrolの
が内部的に設定されている場合でも、親ビューモデルのRelativeSource
プロパティに正しく結合することが保証されます。
<code class="language-xaml"><TextBox Text="{Binding SelectedFile, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" /></code>
SelectedFile
バインディングは予想どおりに機能し、ファイルの選択時に親ビューモデルのSelectedFile
プロパティを更新します。
以上が依存関係のバインディングバインディングが親ビューモデルを更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。