WPF: masquer un onglet élément dans un onglet de contrôle c'est lié à une collection observable
J'ai un onglet contrôle lié à une observablecollection pour la dynamique des onglets comme suit:
<TabControl ItemsSource="{Binding AllTabs}" SelectedIndex="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TabControl.ItemTemplate>
<DataTemplate>
<!--.............. -->
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type vm:TabViewModel}">
<c:MyTabItem/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Donc, l'onglet en-têtes et le contenu sont définis de manière dynamique et affecté comme la collection observable changements. Maintenant, je voudrais masquer des onglets sans les supprimer de la collection derrière - afin de garder les données de l'onglet rouvrir.
Idéalement, chaque onglet chat viewmodel a un IsVisible propriété est définie sur true par défaut. Cependant, où puis-je lier une propriété de ce type dans le but de faire un onglet de l'élément de l'effondrement?
OriginalL'auteur bluebit | 2009-08-27
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez modifier votre
vm:TabViewModel
je devrais changer votre IsVisible à une propriété de Visibilité et utiliser les ContentTemplate:Autre chose, vous pouvez utiliser un convertisseur de modifier le booléen IsVisible pour une Visibilité enum:
Comprend par personne à l'espace de noms dans votre xaml (la racine de votre élément de la Fenêtre, dans cet exemple):
Et dans vos ressources:
Et, enfin, la liaison:
Je pense que c'est ça 🙂
Edit: Ux et modifier le ConverterParameter à la Visibilité.S'est effondré à la Visibilité.Caché caché 😉
J'ai essayé ce scénario exact, mais il ne fait que le contenu de la TabItem s'est effondré. Des idées?
OriginalL'auteur Zenuka
A trouvé la réponse exacte à l'aide de cette réponse
Utiliser le Système.De Windows.Les contrôles.BooleanToVisibilityConverter pour la conversion de données bool pour la Visibilité.
Scott suggestion de l'utilisation de CollectionView est également prometteuse.
OriginalL'auteur Jolly
Je vous suggérons d'utiliser un CollectionView. C'est un peu comme une vue abstraite d'une collection où vous pouvez voir un filtrée partie. En se liant à la CollectionView plutôt que la collection elle-même, vous devriez être capable de voir seulement ceux que vous voulez, et la collection est toujours là dans le fond.
OriginalL'auteur Scott Whitlock
J'ai essayé, mais n'a pas obtenu les résultats escomptés. L'approche suivante de liaison de Visibilité dans le TabControl.ContentTemplate résultats en cacher le contenu de la languette et pas de l'onglet en-tête lui-même.
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type vm:TabViewModel}">
<c:MyTabItem Visibility={Binding Visibility}/>
</DataTemplate>
</TabControl.ContentTemplate>
Encore des combats à masquer l'onglet en-tête lui-même.
OriginalL'auteur Jolly