在 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)。一种类型的对象有后代对象,所以我选择在树视图中显示它;另一个是普通对象,所以我将它显示在列表框中。现在,我有一个工具箱,其中包含适用于两种类型对象的修改命令,因此我将两个对象绑定到同一个属性。本质上,例如,我希望在所选项目上调用 Rename 方法,无论它是树视图还是列表框项目。