我有一个场景,其中我有一个类似于Visual Studio中的属性窗口的全局可用Properties窗口,它绑定到我的模型的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吗?是否有更好的方法可以避免这个问题?