[英]wpf repeater like items control
我有一個WPF應用程序,我想要中繼器之類的功能。 我指的是以下類似控件的Wpf轉發器帖子,所以我有類似於ItemsControl的項目源的列表。 我要顯示的內容如下:
父內容1
子內容1。父內容2
子內容2。等等...
因此,父級內容1和父級內容2是Data對象內部的名稱屬性,而子級content1和子級Content2就像數據對象內部的value屬性。
這是我創建的示例應用程序,但出現了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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.