我的WPF应用程序中遇到了一个简单的问题,让我在桌面上敲打我的脑袋.我有一个TabControl,其中每个TabItem都是使用类似于此的DataTemplate为ViewModel生成的视图:
<DataTemplate DataType="{x:Type vm:FooViewModel}">
<vw:FooView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
FooView包含一个ComboBox:
<ComboBox ItemsSource="{Binding Path=BarList}" DisplayMemberPath="Name" SelectedItem="{Binding Path=SelectedBar}"/>
Run Code Online (Sandbox Code Playgroud)
和FooViewModel包含一个简单的属性:public Bar SelectedBar { get; set; }.我的问题是,当我为我的ComboBox设置值时,更改为另一个选项卡,然后更改回来,ComboBox再次为空.如果我在我的属性的setter上设置断点,我看到null当我切换到另一个选项卡时该属性被分配给.
根据我的理解,当切换选项卡时,它将从VisualTree中删除 - 但为什么要将我的ViewModel属性设置为null?这使得我很难保持持久状态,并且检查value != null似乎不是正确的解决方案.任何人都可以在这种情况下摆脱一些吗?
编辑:设置器断点处的调用堆栈仅显示[外部代码] - 没有提示.