基于Josh Smith的MVVM example,我实现了多选项卡选项,该选项将不同的选项卡绑定到不同的视图模型 使用一个简单的datatemplate将视图模型绑定到视图。
<DataTemplate DataType="{x:Type fixtureVM:SearchViewModel}">
<SearchVw:SearchView/>
</DataTemplate>
我遇到的问题是,当我切换标签然后再切换回来时,文本框中的值会消失。当我将文本框中的文本绑定到ViewModel中的值时,它不会消失。这很好,我可以克服这个问题,但我有另一个问题,例如,一旦标签失去焦点,网格中滚动条的位置就会消失。
为什么价值消失了?我假设它是一个清理资源的WPF子系统任务!?我怎么能避免这个?我也觉得这可能会减慢我的应用程序。
答案 0 :(得分:2)
请阅读我的帖子here,了解发生这种情况的原因。基本上,因为您在DataTemplate中连接View和ViewModel,所以每次收到焦点时,该选项卡都会重新创建视图。是的,这会占用更多资源。您可以通过以不同的方式连接视图和ViewModel来解决这个问题(例如,Catelog方法,WAF或使用不同类型的项目控件也可以做到这一点......)
答案 1 :(得分:0)
这是一个创建TabControl子类的解决方案。