2010-01-14 5 views
0

Je souhaite créer un contrôle utilisateur qui prend des listes d'objets différents. Ces objets seraient affectés au contrôle au moment du design. Maintenant je veux pouvoir utiliser linq pour objecter pour trier cette liste à l'intérieur de la commande usercontrol. Quelqu'un peut-il me donner des idées sur la façon de s'y prendre?Passage de listes génériques à un contrôle utilisateur WPF

Répondre

3

Ajoutez un DependencyProperty de type ObservableCollection<T> à votre classe de contrôle utilisateur (appelez le MyItemsSource par exemple). Dans votre contenant XAML, lier cette propriété à votre collection Linq, et à l'intérieur de votre contrôle utilisateur, lier votre ListBox (ou tout autre ItemsControl) à la propriété comme suit:

{Binding 
    RelativeSource={RelativeSource 
         Mode=FindAncester, 
         AncestorType=UserControl}, 
    Path=MyItemsSource} 

Alternativement, vous pouvez définir la propriété Name à l'intérieur du le contrôle de l'utilisateur sur l'élément de niveau supérieur (l'élément UserControl) à, par exemple MyUserControl, et se lient contre une ElementName au lieu d'un RelativeSource comme tel:

{Binding ElementName=MyUserControl, Path=MyItemsSource} 
+0

mais wouldnt je dois déclarer comme public Shared NickNa mesProperty Comme DependencyProperty = _ DependencyProperty.Register ("NickNames", GetType (ObservableCollection (Of MyObjectOne)), GetType (MyType)) mais au moment de la création du contrôle, je ne sais pas sur le type de myobject. Je veux le rendre flexible et en quelque sorte lier des listes de différents types d'objets. – Farax

+0

Oh oui, c'est bien sûr pour un type générique avec un argument spécifié. Si vous voulez pouvoir passer dans une collection d'un objet, vous devrez le définir comme 'ObservableCollection (Of Object)' –

Questions connexes