내 MVVM 기반 WPF 응용 프로그램에는 ContentControls 또는 ContentPresenters에 동적으로로드되는 여러 ViewModel 유형이 있습니다. 그 때문에 나는 명시 적으로 DataTemplate을이 XAML에서 사용되는 것을 설정해야합니다ContentControls에 대한 DataTemplate 기본 가시성
이제<ContentControl Content={Binding SomePropertyOfTypeViewModel} ContentTemplate={StaticResource someTemplate} />
내 문제는 ContentControl을이 즉, 뷰 모델 (아무것도에 바인드되고있는 경우에서도, 콘텐츠 컨트롤이 someTemplate
의 UI를 표시한다는 것입니다. SomePropertyOfTypeViewModel이 null 임) 현재 ContentControls에 아무 것도 표시되어 있지 않은 경우 모든 ContentControl을 표시 할 수있는 빠르고 쉬운 방법이 있습니까? 내재 된 DataTemplates를 사용할 때 모든 것이 예상대로 작동합니다. 불행히도 나는이 메커니즘을 여기서 사용할 수 없다.
는 업데이트 :
나의 현재 솔루션은 부모 ViewModels의 속성으로 노출되는 각각의 뷰 모델에 대해 하나 개의 추가 bool Visible
속성을 가지고있다. 속성이 null이 아닌 경우에만 true
을 반환합니다. ContentControl의 Visiblibilty는이 속성에 바인딩됩니다. 나는 여분의 특성을 많이 유지해야하기 때문에 ParentViewModel.SomePropertyOfTypeViewModelVisible, ParentViewModel.SomeOtherPropertyOfTypeViewModelVisible ...
<ContentControl Content={Binding SomePropertyOfTypeViewModel} Visibility={Binding SomePropertyOfTypeViewModelVisible, Converter={StaticRresource boolToVisibiltyConverter}}" />
이 매우 만족하지 않습니다.
이것은 정확히 내가 피하려고했던 것입니다. 이 방법을 사용하면 속성을 통해 노출 된 각 ViewModel에 대해 하나씩 새로운 bool 속성을 도입해야합니다. 'ParentViewModel.Child1Visiible, ParentViewModel.Child2Visible ...'나는 더 일반적인 해결책을 얻고 싶었습니다. 각 ContentControl에 대한 많은 추가 xaml – bitbonk