2009-12-16 3 views
0

J'ai un problème d'interface utilisateur avec l'édition en couches où un ensemble différent d'outils doit être visible en fonction du ComboBox sélectionnant le calque et reculant sur l'idiome utiliser. Les outils ne doivent pas être dans un conteneur visible.Mise en page contextuelle - modification de la visibilité d'un ensemble d'outils WPF basé sur une zone de liste déroulante

La sélection ComboBox est liée à une propriété entière simple dans le ViewModel.

Les alternatives que j'ai envisageais sont pour la plupart basées sur une série de StackPanel conteneurs au même endroit:

  1. Bind les Propriétés de visibilité de StackPanel s à une autre propriété ViewModel pour chacun, alors les visibilité les propriétés calculent en fonction de la valeur de support du Combo. Je devrai ajouter une autre notification pour m'assurer qu'ils sont actualisés lorsque le Combo change.
  2. Utiliser un ValueConverter pour lier StackPanel les propriétés de visibilité de s directement à la sélection Combo
  3. Mettre les StackPanel s dans chacune des TabItem s dans un TabControl et supprimer tout dessin d'en-tête, de sorte que la sélection TabControl peut être directement mis en correspondance avec la sélection Combo.
  4. Utilisez une sous-classe Selector ou simplement un modèle de sélecteur pour obtenir le comportement de 3 sans bagage de TabControl.
  5. L'approche que j'utilise pour l'instant - a ajouté un gestionnaire Click au popup sur lequel leur visibilité est censée dépendre et simplement définir la visibilité des différents panneaux en fonction de SelectedIndex de ce popup. Très old school mais simple et facile à suivre.

Répondre

1

Je vote pour # 1. Je sais que les puristes du WPF diront que c'est un peu "old school" et qu'il y a de meilleures façons de le gérer. Mais parfois, vous avez juste besoin de quelques exemples de base de vieilles fonctionnalités et KISS est la meilleure façon de s'y prendre.

Questions connexes