2009-06-28 6 views
0

J'ai un contrôle utilisateur wpf qui expose un IEnumerable ItemsSource DependencyProperty. Je lie cette propriété à un contrôle ListBox dans mon UserControl.Comment faire pour que mon UserControl WPF fonctionne avec CompositeCollection

Je voudrais savoir comment je peux faire fonctionner mon contrôle utilisateur quand un CompositeCollection est donné. Actuellement, je suis en utilisant ma commande comme ceci:

<my:uc> 
    <my:uc.ItemsSource> 
    <CompositeCollection> 
     <CollectionContainer Collection="{My Binding}"></CollectionContainer> 
     <CollectionContainer Collection="{My Binding}"></CollectionContainer> 
    </CompositeCollection> 
    </my:uc.ItemsSource> 
</my:uc> 

Je voudrais que cela afficher le contenu de ces CollectionContainers dans la zone de liste, mais au moment de son pas à travers les conteneurs énumération. Les seuls éléments affichés par ma listbox sont deux éléments "System.Data.CollectionContainer".

[b] Modifier: [/ b] Le concepteur XAML m'informe que "Property 'ItemsSource" ne prend pas en charge les valeurs de type "CompositeCollection". " Je pense que c'est mon problème .. mais comment puis-je le faire "support" CompositeCollection?

Répondre

0

La réponse correcte consistait à créer une classe qui étend ItemsControl. Vous ne pouvez pas utiliser de code XAML lors de la conception du contrôle, mais il vous donne la propriété ItemsSource spéciale qui prend en charge CollectionContainers. La vue du contrôle doit être définie dans sa propriété ContentTemplate.

0

Je pense que ce que vous obtenez est la méthode ToString de votre objet, qui renvoie par défaut le nom du type. Essayez de surcharger ToString et de renvoyer la valeur que vous voulez voir dans votre liste.

+0

Le problème est que le CollectionContainer ne devrait pas s'afficher du tout, mais qu'il doit fournir ses éléments enfants. –

Questions connexes