2010-07-12 5 views
0

J'ai une zone de liste avec des éléments créés via la liaison de données. Le modèle d'élément crée une vue personnalisée pour chaque élément généré. Chaque vue d'élément généré est son propre contrôle utilisateur. Je voudrais changer l'état de la liste à quelque chose comme "Détails" vs "Compact" et avoir chaque élément a son propre état changé automatiquement. L'élément de vue sait ce qu'il doit afficher ou masquer en fonction de son état. Je ne peux pas sembler changer l'état de ce contrôle d'utilisateur généré d'un niveau supérieur (le bouton pour changer les modes d'affichage).Comment modifier l'état des éléments de conteneur en fonction de l'état du conteneur (WPF/XAML)

J'espère que c'est assez clair. Je vais ajouter des détails si cela aide.

Merci beaucoup pour toute aide!

+0

Merci pour les réponses rapides! Désolé, j'aurais dû être plus clair. J'ai spécifiquement besoin de faire un changement d'état sur le contrôle utilisateur généré, pas seulement de définir une valeur de propriété. Je veux déclarer un déclencheur d'événement de sorte que la source soit un clic sur un bouton, puis un ChangeStateAction (je voudrais tout déclaratif) sur le contrôle de l'utilisateur. Le bouton est au niveau de ListBox, donc une simple liaison ancêtre ne le trouverait pas. En réalité, cela ne fait pas que la propriété de contrôle de l'utilisateur correspond à la valeur de la propriété d'un autre contrôle - elle déclenche un changement d'état basé sur un événement click d'un bouton ailleurs. –

Répondre

1

Définissez un déclencheur de données dans votre contrôle généré lié à la propriété relative d'un parent. Plus d'info here sur les utilisations de RelativeSource - votre recherche de l'option ancêtre, qui sera la liste des parents que vous mentionnez.

Disons que vous exposez une propriété ViewType sur la zone de liste, puis quelque chose comme

{Binding Path=ViewType, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}} 

devrait fonctionner.

0

Vous pouvez définir

MyValue = "{Binding Path=SelectedItem.CustomProperty, Converter=CustomPropertyConverter}" 

Ce descendrez la chaîne d'objet votre élément sélectionné.

FindAncestor grimpe la chaîne.