У меня есть сценарий, в котором у меня есть глобально доступное окно свойств (аналогичное окну свойств в 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 списка без изменений. Таким образом, привязки становятся несинхронными.
Кто-нибудь знает способ убедиться, что поля списка сбрасывают свой SelectedItem, когда SelectedObject нет в списке? Есть ли лучший способ сделать это, не страдая от этой проблемы?