c# - 如何从 WPF 中的 ItemsSource 在 WrapPanel 中创建 Border 元素的集合?
问题描述
我想Border
在外部重复元素WrapPanel
:
<WrapPanel x:Name="filterWrapper" Orientation="Horizontal">
<Border>
<WrapPanel>
<TextBlock Text="{Binding FilterName}"/>
<TextBlock Text="x"/>
</WrapPanel>
</Border>
</WrapPanel>
这是依赖类:
public class FilterField
{
public String FilterName { get; set; }
}
我有一个FilterField
对象集合,这应该会导致:
<WrapPanel x:Name="filterWrapper" Orientation="Horizontal">
<Border>
<WrapPanel>
<TextBlock Text="Test_1"/>
<TextBlock Text="x"/>
</WrapPanel>
</Border>
<Border>
<WrapPanel>
<TextBlock Text="Test_2"/>
<TextBlock Text="x"/>
</WrapPanel>
</Border>
<Border>
<WrapPanel>
<TextBlock Text="Test_3"/>
<TextBlock Text="x"/>
</WrapPanel>
</Border>
</WrapPanel>
我怎样才能做到这一点?
解决方案
您可以使用ItemsControl
来显示具有特定模板的项目集合,具体Panel
如下:
<ItemsControl ItemsSource="{Binding Items}">
<!-- Place all items in a WrapPanel -->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel x:Name="filterWrapper" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- Define the look of each item -->
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type wpfapp1:FilterField}">
<Border>
<WrapPanel>
<TextBlock Text="{Binding FilterName}"/>
<TextBlock Text="x"/>
</WrapPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
您在DataTemplate
中定义的ItemsControl.ItemTemplate
被应用于源集合中的所有项目,并且每个项目都被添加到ItemsControl.ItemsPanel
您定义的 中,这里是一个WrapPanel
.
这是假设您的视图模型中有Items
一个类型的集合,如下所示:List<FilterField>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
DataContext = new MyViewModel();
}
}
public class MyViewModel {
public List<FilterField> Items { get; set; } = new List<FilterField> {
new FilterField() { FilterName = "Test_1"},
new FilterField() { FilterName = "Test_2"},
new FilterField() { FilterName = "Test_3"},
};
}
public class FilterField {
public string FilterName { get; set; }
}
推荐阅读
- reactjs - Reactjs 日期选择器
- c - 解析 C 字符串并使用字符串中的值设置变量
- javascript - 无法读取角度未定义的属性“集合”
- javascript - 谁能告诉我为什么我的代码不能正常工作?游戏石头、纸、剪刀。Java 脚本
- c# - 如何在 C# 表单应用程序本身中存储启动凭据?
- tensor - 我们可以使用张量运算而不是循环计算来解决它吗?
- android - 带有房间数据库的 Android 分页;RecyclerView:没有附加适配器;跳过布局
- javascript - 如何将工具提示标题与 Highcharts 底部的图例对应?
- javascript - 引导下拉菜单不适用于影子根
- python - py2exe 错误:[Errno 2] 没有这样的文件或目录 run-py3.9-win-amd64.exe