В моем приложении WPF есть простая проблема, из-за которой я бью себя по столу. У меня есть TabControl, где каждый TabItem является представлением, сгенерированным для ViewModel с использованием DataTemplate, подобным этому:
<DataTemplate DataType="{x:Type vm:FooViewModel}">
<vw:FooView/>
</DataTemplate>
FooView содержит ComboBox:
<ComboBox ItemsSource="{Binding Path=BarList}" DisplayMemberPath="Name" SelectedItem="{Binding Path=SelectedBar}"/>
и FooViewModel содержит простое свойство: public Bar SelectedBar { get; set; }
. Моя проблема в том, что, когда я устанавливаю значение для своего ComboBox, переключаюсь на другую вкладку, а затем возвращаюсь обратно, ComboBox снова пуст. Если я установлю точку останова для установщика для своего свойства, я вижу, что свойство назначается null
при переключении на другую вкладку.
Из того, что я понимаю, когда вкладка переключается, она удаляется из VisualTree - но почему она устанавливает для свойства моего ViewModel значение null
? Из-за этого мне очень трудно поддерживать постоянное состояние, и проверка value != null
не кажется правильным решением. Кто-нибудь может пролить что-то подобное в этой ситуации?
Редактировать: в стеке вызовов в точке останова установщика отображается только [Внешний код] - здесь никаких подсказок.