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>
我有一个 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>