WPF アプリケーションには TreeView コントロールと ListBox コントロールがあり、どちらもSelectedItem
依存関係プロパティがビュー モデル内の同じプロパティにバインドされています。そのため、両方のコントロールで項目を選択し、そのビュー モデルのプロパティにアクセスしようとすると、予期しない動作をします。アイテムが別のコントロールで選択されているときに、あるコントロールで選択を削除することは可能ですか?
サンプル コード (CurrentNamedObject
はビュー モデル プロパティであり、両方のコントロールで同じです):
<controls:XTreeView Grid.Column="0" Grid.Row="1">
<i:Interaction.Behaviors>
<wpf:BindableSelectedItemBehavior SelectedItem="{Binding ViewModel.CurrentNamedObject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</i:Interaction.Behaviors>
...
<ListBox Grid.Column="2" Grid.Row="1" SelectedItem="{Binding ViewModel.CurrentNamedObject}">
...
アップデート:
この背後にある基本的な考え方は次のとおりです。同じインターフェイス (IModifiable) を実装する 2 種類のオブジェクトがあります。オブジェクトの 1 つのタイプには子孫オブジェクトがあるため、ツリービューで表示することにしました。もう 1 つはプレーン オブジェクトなので、リスト ボックスに表示します。これで、両方のタイプのオブジェクトに適用できる変更コマンドを含むツールボックスができたので、両方のオブジェクトを同じプロパティにバインドしました。本質的には、たとえば、選択したアイテムがツリービューであるかリストボックス アイテムであるかに関係なく、Rename メソッドを呼び出したいと考えています。