wpf repeater like items 控件

wpf repeater like items control

我有一个 wpf 应用程序,我想要类似中继器的功能。我指的是以下 post Wpf repeater like control 所以我有一个类似于 ItemsControl 的项目源的列表。我要显示的内容如下;

Parent Content1
Child content1.

Parent Content2
Child content2.

So on....

所以父内容 1 和父内容 2 是数据对象中的名称 属性,子内容 1 和子内容 2 就像数据对象中的值 属性。

这是我创建的示例应用程序,但我收到一个 xaml 解析异常,提示“'将值添加到类型 'System.Windows.Controls.UIElementCollection' 的集合引发异常”。这只是部分 xaml。我是项目控制的新手。请帮忙。

 <ItemsControl
                ItemsSource="{Binding Path=AllItems}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Label Content="{Binding names}"></Label>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" Margin="10">
                        <TextBlock
                            Text="{Binding}"></TextBlock>
                        </StackPanel>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>

Mainwindow.cs

 public partial class MainWindow : Window
        {
            public List<Data> AllItems { get; set; }
            public MainWindow()
            {
                InitializeComponent();
                this.DataContext = this;
                Populate();
            }

        public void Populate()
        {
        AllItems = new List<Data>();
        Data data = new Data();
        data.names = "Parent Content1";
        data.value = "Child Content1";
        AllItems.Add(data);
        Data data1 = new Data();
        data1.names = "Parent Content2";
        data1.value = "Child Content2";
        AllItems.Add(data1);
       }        
        }
        public class Data
        {
            public string names { get; set; }
            public string value { get; set; }

        }

无需设置ItemsPanelTemplate,因为它默认使用StackPanel。这里的问题是因为您还在 ItemsPanelTemplate 中添加了 TextBlock。删除它,然后在 ItemTemplate.

中添加正确的数据格式
<ItemsControl
    ItemsSource="{Binding Path=AllItems}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding names}"></TextBlock>
                <TextBlock Text="{Binding value}"></TextBlock>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>