在我的基於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