将通用列表传递给WPF用户控件

将通用列表传递给WPF用户控件,wpf,list,user-controls,Wpf,List,User Controls,我想创建一个usercontrol,它获取不同对象的列表。这些对象将在设计时指定给控件。现在,我希望能够使用linq to对象在usercontrol中对该列表进行排序。有谁能告诉我怎么做吗 向用户控件类添加类型为observedcollection的dependencProperty(例如,将其称为MyItemsSource)。在包含的XAML中,将该属性绑定到Linq集合,并在用户控件中,将列表框(或其他项控件)绑定到该属性,如下所示: {Binding RelativeSourc

我想创建一个usercontrol,它获取不同对象的列表。这些对象将在设计时指定给控件。现在,我希望能够使用linq to对象在usercontrol中对该列表进行排序。有谁能告诉我怎么做吗

向用户控件类添加类型为
observedcollection
dependencProperty
(例如,将其称为
MyItemsSource
)。在包含的XAML中,将该属性绑定到Linq集合,并在用户控件中,将
列表框
(或其他
项控件
)绑定到该属性,如下所示:

{Binding 
    RelativeSource={RelativeSource 
                        Mode=FindAncester, 
                        AncestorType=UserControl}, 
    Path=MyItemsSource}
或者,您可以将顶层元素(
UserControl
元素)上的用户控件内部的
Name
属性设置为例如
MyUserControl
,并根据
ElementName
而不是
相对资源进行绑定,例如:

{Binding ElementName=MyUserControl, Path=MyItemsSource}

向您的用户控件类添加类型为
ObservableCollection
DependencyProperty
(例如称之为
MyItemsSource
)。在包含的XAML中,将该属性绑定到Linq集合,并在用户控件中,将
列表框
(或其他
项控件
)绑定到该属性,如下所示:

{Binding 
    RelativeSource={RelativeSource 
                        Mode=FindAncester, 
                        AncestorType=UserControl}, 
    Path=MyItemsSource}
或者,您可以将顶层元素(
UserControl
元素)上的用户控件内部的
Name
属性设置为例如
MyUserControl
,并根据
ElementName
而不是
相对资源进行绑定,例如:

{Binding ElementName=MyUserControl, Path=MyItemsSource}

但是我不必像公共共享昵称属性那样声明它为DependencyProperty=\uDependencyProperty.Register(“昵称”,GetType(ObservableCollection(MyObjectOne)),GetType(MyType)),但是在创建控件时,我不知道myobject的类型。我想让它变得灵活,并以某种方式绑定不同类型对象的列表。哦,是的,这当然适用于具有指定参数的泛型类型。如果您希望能够传入任何对象的集合,您必须将其设置为
observateCollection(of object)
,但我不必像公共共享昵称属性那样声明它为dependencProperty=\udependencProperty.Register(“昵称”,GetType(observateCollection(of MyObjectOne)),GetType(MyType))但是在创建控件时,我不知道myobject的类型。我想让它变得灵活,并以某种方式绑定不同类型对象的列表。哦,是的,这当然适用于具有指定参数的泛型类型。如果您希望能够传入任何对象的集合,则必须将其设置为
ObservableCollection(of object)