我的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似乎不是正确的解决方案.任何人都可以在这种情况下摆脱一些吗?
编辑:设置器断点处的调用堆栈仅显示[外部代码] - 没有提示.
Hol*_*dam 21
我们遇到了同样的问题.我们找到了一个描述问题的博客文章.看起来它是WPF中的一个错误,并且有一个解决方法:在ItemsSource绑定之前指定SelectedItem绑定,问题应该消失.
博客文章的链接:
http://www.metanous.be/pharcyde/post/Bug-in-WPF-combobox-databinding.aspx
我曾经遇到过类似的问题。组合框似乎丢失了 VisibilityChanged 事件中的所选项目。解决方法是在发生这种情况之前清除绑定,并在返回时重置它。您还可以尝试将 Binding 设置为 Mode=TwoWay
希望这有帮助
扬
| 归档时间: |
|
| 查看次数: |
14197 次 |
| 最近记录: |