我认为我所做的是Josh Smith MVVM手册中的内容,但是当视图模型中的数据没有改变时,值转换器的启动似乎有很多问题。
ContentControl
在XAML中定义如下:
<ContentControl Grid.Row="0" Content="{Binding CurrentViewModel}" />
内容控制
引用的资源字典如下所示:
<ResourceDictionary ...>
<DataTemplate DataType="{x:Type lib_vm:SetupPanelViewModel}">
<lib_v:SetupPanel />
</DataTemplate>
<DataTemplate DataType="{x:Type lib_vm:InstructionsPanelViewModel}">
<lib_v:InstructionsPanel />
</DataTemplate>
</ResourceDictionary>
因此,基本上,这两个数据模板指定了用哪个视图模型显示哪个视图。
每当
CurrentViewModel
属性,但它似乎也会导致视图上的值转换器启动,即使数据没有更改。这是一个特殊的问题
IMultiValueConverter
value
数组设置为
DependencyProperty.UnsetValue
这让我想知道我是否不应该手动完成所有事情,比如:
-
实例化每个视图。
-
DataContext
将每个视图的属性转换为相应的视图模型。
-
把这个给我
内容控制
一个名字并公开。
-
处理
PropertyChanged
-
在事件处理程序中,手动设置
Content
财产
根据
当前视图模型
(使用
if
这似乎管用,但也似乎很不雅观。我希望有更好的办法。
您能告诉我处理视图切换的最佳方法吗?这样值转换器就不会不必要地启动了?