0

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 メソッドを呼び出したいと考えています。

4

0 に答える 0