Dans mon application WPF basée sur MVVM, de nombreux types de ViewModel différents sont chargés dynamiquement dans ContentControls ou ContentPresenters. À cet effet que je dois mettre explictly ce que DataTemplate doit être utilisé en XAML:Visibilité par défaut de DataTemplate pour ContentControls
<ContentControl Content={Binding SomePropertyOfTypeViewModel} ContentTemplate={StaticResource someTemplate} />
Maintenant, mon problème est que le contrôle de contenu affiche l'interface utilisateur de someTemplate
même si le ContentControl est lié à rien (c.-à-ViewModel. SomePropertyOfTypeViewModel est null) Existe-t-il un moyen rapide et facile de faire en sorte que tous les ContentControls n'affichent rien s'ils ne sont actuellement liés à rien? Lorsque j'utilise des DataTemplates implicites, tout fonctionne comme prévu. Malheureusement, je ne peux pas utiliser ce mécanisme ici.
Mise à jour:
Ma solution actuelle est d'avoir un supplémentaire bool Visible
propriété pour chaque ViewModel qui est exposé comme une propriété dans les ViewModels parents. Il renvoie true
uniquement lorsque la propriété n'est pas NULL. La visibilité de ContentControl est liée à cette propriété. ParentViewModel.SomePropertyOfTypeViewModelVisible, ParentViewModel.SomeOtherPropertyOfTypeViewModelVisible ...
<ContentControl Content={Binding SomePropertyOfTypeViewModel} Visibility={Binding SomePropertyOfTypeViewModelVisible, Converter={StaticRresource boolToVisibiltyConverter}}" />
Ce n'est pas très satisfaisant parce que je dois maintenir un grand nombre de propriétés supplémentaires.
C'est exactement ce que j'essayais d'éviter. De cette façon, je devrais introduire des tonnes de nouvelles propriétés bool, une pour chaque ViewModel qui est exposée via une propriété: 'ParentViewModel.Child1Visiible, ParentViewModel.Child2Visible ...' J'espérais obtenir une solution plus générique qui ne nécessiterait pas non plus beaucoup de xaml supplémentaire pour chaque ContentControl – bitbonk