【发布时间】:2017-10-01 15:24:52
【问题描述】:
我是 WPF 新手。这里我有以下静态网格
像这样子网格的框架
子网格
我有一个主网格,我正在尝试动态生成子网格并将其填充到主网格列 0 中
我试图得到的最终结果如下所示
这里我正在尝试使用一些样式填充项目集合(每个集合项目属性都有单独的块)。
所以对于每个集合项,我想生成一个网格并将集合属性名称和值绑定在上图中的网格内,红色表示集合项的网格,黑色网格是主网格。
非常感谢为此目的提出一个想法或提出更好的解决方案
编辑:
到目前为止,我尝试关注,这里作为子网格我试图填充 icTodoList 网格 3 次,但这里只填充 1 次
XML 文件
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="147*"/>
<ColumnDefinition Width="220*"/>
<ColumnDefinition Width="150*"/>
</Grid.ColumnDefinitions>
<ItemsControl Name="icTodoList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Border BorderBrush="Black" BorderThickness="1">
<Grid Name="icTodoList" Grid.Row="0" Grid.Column="0" Margin="0,10,10,2941" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Right" Width="268">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="79*"/>
<ColumnDefinition Width="99*"/>
<ColumnDefinition Width="90*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="39*"/>
<RowDefinition Height="63*"/>
<RowDefinition Height="29*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Title}"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Completion}"/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Description}"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding Title}"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Completion}"/>
<TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding Description}"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="{Binding Title}"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Completion}"/>
<TextBlock Grid.Row="2" Grid.Column="2" Text="{Binding Description}"/>
</Grid>
</Border>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
代码隐藏文件
public WindowPanelConstructor()
{
InitializeComponent();
List<TodoItem> items = new List<TodoItem>();
for (int i = 0; i < 3; i++)
{
items.Add(new TodoItem() { Title = "Title" + i.ToString(), Completion = "Completion" + i.ToString(), Description = "Description" + i.ToString() });
icTodoList.ItemsSource = items;
}
}
public class TodoItem
{
public string Title { get; set; }
public string Completion { get; set; }
public string Description { get; set; }
}
【问题讨论】:
-
使用 ItemsControl。
-
我可以在这个 ItemsControl 里面放一个网格吗?
-
我不知道你为什么要这样做,但你得到了我的许可。
-
@EdPlunkett 实际上我的实际需求是这样的,我有一个主网格,我想用一些样式填充项目集合(每个集合项目属性都有单独的块)。因此,对于每个集合项,我想生成一个网格并将该集合属性名称和值绑定在网格内here in this picture 红色表示集合项的网格,黑色网格是主网格。如果您为此目的提出替代,更好的解决方案,我想继续它
-
使用 ItemsControl。如果您已经有项目的 DataTemplate (如果这就是“我有子网格的模板”旨在传达的内容),那应该很容易。无论如何都不会太难。 ItemsControl 有大量文档。