在我的基于MVVM的WPF应用程序中,我有很多不同的ViewModel类型动态加载到ContentControls或ContentPresenters中。为此我需要显式地设置的DataTemplate就是在XAML中使用:ContentControls的DataTemplate默认可见性
<ContentControl Content={Binding SomePropertyOfTypeViewModel} ContentTemplate={StaticResource someTemplate} />
现在我的问题是,内容控制显示的someTemplate
的UI即使ContentControl中必然要什么(即视图模型。 SomePropertyOfTypeViewModel为空) 有没有一种简单快捷的方法让所有的ContentControls都不显示任何内容?当我使用隐式DataTemplates时,一切都按预期工作。不幸的是,我不能在这里使用这个机制。
更新:
我目前的解决办法是有一个额外的bool Visible
财产暴露在父的ViewModels属性每个视图模型。仅当该属性不为空时它才返回true
。 ContentControl的Visiblibtyty绑定到这个属性。 ParentViewModel.SomePropertyOfTypeViewModelVisible, ParentViewModel.SomeOtherPropertyOfTypeViewModelVisible ...
<ContentControl Content={Binding SomePropertyOfTypeViewModel} Visibility={Binding SomePropertyOfTypeViewModelVisible, Converter={StaticRresource boolToVisibiltyConverter}}" />
这不是很满意,因为我要保持很多额外的属性。
这正是我试图避免的。这样我就不得不引入大量新的bool属性,每个ViewModel对象通过一个属性公开:'ParentViewModel.Child1Visiible,ParentViewModel.Child2Visible ...'我希望得到一个更通用的解决方案,也不需要每个ContentControl都有很多额外的xaml – bitbonk 2010-05-04 05:43:02