C# 将自定义对象集合绑定到stackpanel中的自定义控件

C# 将自定义对象集合绑定到stackpanel中的自定义控件,c#,wpf,data-binding,user-controls,C#,Wpf,Data Binding,User Controls,我有一个UserControl,我用一些Labels来显示我编写的自定义类中的信息,该类中的字段保存Labels必须显示的数据 我将有一个上述类的对象集合,我想在我的WPF窗口上以水平方式一个接一个地显示它们 我想使用StackPanel,因为我对WPF了解不多,所以想不出其他控件可以做到这一点。因此,我四处寻找将集合绑定到StackPanel的方法 我发现这些问题:,和 但是,简单地将我的UserControl放在DataTemplate中是不起作用的,我不知道如何告诉WPF-获取这个对象集合

我有一个
UserControl
,我用一些
Label
s来显示我编写的自定义类中的信息,该类中的字段保存
Label
s必须显示的数据

我将有一个上述类的对象集合,我想在我的WPF窗口上以水平方式一个接一个地显示它们

我想使用
StackPanel
,因为我对WPF了解不多,所以想不出其他控件可以做到这一点。因此,我四处寻找将集合绑定到
StackPanel
的方法

我发现这些问题:,和

但是,简单地将我的
UserControl
放在
DataTemplate
中是不起作用的,我不知道如何告诉WPF-获取这个对象集合,将每个对象绑定到我的
UserControl
的一个实例,并将它们堆叠在这个堆栈面板中


我更倾向于主要使用XAML来实现这一点,因此非常感谢使用WPF数据绑定的答案,谢谢

您需要将DataContext设置为拥有自定义对象集合(例如MyObjectcollection)的ViewModel,然后只需按如下方式设置绑定:

<ItemsControl ItemsSource="{Binding MyObjectCollection}">
<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" IsItemsHost="True"/>
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <MyUserControl />
    </DataTemplate>
</ItemsControl.ItemTemplate>


使用ItemsControl并将DataTemplate分配给其ItemTemplate属性。请参阅“将每个对象绑定到我的UserControl实例”-UserControl应该在DataTemplate中声明。如果控件公开可绑定属性,则应将其绑定到项的属性,即“自定义对象”。否则,UserControl也可以直接绑定到该对象,该对象将自动传递到其DataContext。因此,DataTemplate将只包含
。但是,请确保UserControl没有明确设置其自己的DataContext属性。我对其进行了调整,以便datatemplate使用您的UserControl