【发布时间】:2011-01-27 22:20:18
【问题描述】:
我有一个场景,我有一个全局可用的属性窗口(类似于 Visual Studio 中的属性窗口),它绑定到我模型的 SelectedObject 属性。我有许多不同的方式来浏览和选择对象,所以我的第一次尝试是直接将它们绑定到 SelectedObject。例如:
<ListBox ItemsSource="{Binding ActiveProject.Controllers}"
SelectedItem="{Binding SelectedObject, Mode=TwoWay}"/>
<ListBox ItemsSource="{Binding ActiveProject.Machines}"
SelectedItem="{Binding SelectedObject, Mode=TwoWay}"/>
当我在每个列表中有多个项目时,这很有效,但如果列表只有一个项目,它会失败。当我选择该项目时,SelectedObject 不会更新,因为列表仍然认为它的原始项目已被选中。我相信会发生这种情况,因为当 SelectedObject 不是列表中的对象时,双向绑定只是忽略了来自源的更新,从而使列表的 SelectedItem 保持不变。这样一来,绑定就变得不同步了。
是否有人知道当 SelectedObject 不在列表中时确保列表框重置其 SelectedItem 的方法?有没有更好的方法来解决这个问题?
【问题讨论】:
标签: c# wpf data-binding listbox