文本框的值消失 - 将视图模型绑定到选项卡(内容控件)

时间:2010-05-14 15:38:03

标签: .net wpf performance binding mvvm

基于Josh Smith的MVVM example,我实现了多选项卡选项,该选项将不同的选项卡绑定到不同的视图模型 使用一个简单的datatemplate将视图模型绑定到视图。

 <DataTemplate  DataType="{x:Type fixtureVM:SearchViewModel}">
    <SearchVw:SearchView/>
</DataTemplate>

我遇到的问题是,当我切换标签然后再切换回来时,文本框中的值会消失。当我将文本框中的文本绑定到ViewModel中的值时,它不会消失。这很好,我可以克服这个问题,但我有另一个问题,例如,一旦标签失去焦点,网格中滚动条的位置就会消失。

为什么价值消失了?我假设它是一个清理资源的WPF子系统任务!?我怎么能避免这个?我也觉得这可能会减慢我的应用程序。

2 个答案:

答案 0 :(得分:2)

请阅读我的帖子here,了解发生这种情况的原因。基本上,因为您在DataTemplate中连接View和ViewModel,所以每次收到焦点时,该选项卡都会重新创建视图。是的,这会占用更多资源。您可以通过以不同的方式连接视图和ViewModel来解决这个问题(例如,Catelog方法,WAF或使用不同类型的项目控件也可以做到这一点......)

答案 1 :(得分:0)

这是一个创建TabControl子类的解决方案。

http://eric.burke.name/dotnetmania/2009/04/26/22.09.28