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