gpt4 book ai didi

c# - 在 WPF DataGrid 中合并单元格

转载 作者:可可西里 更新时间:2023-11-01 03:10:27 24 4
gpt4 key购买 nike

我想创建一个跨越一列中多行的 WPF 数据网格。像这样:

+-------+----------------+
| Name | Attributes |
+-------+----------------+
| | Horse Power |
| BMW +----------------+
| | Color |
+-------+----------------+
| | Weight |
| Ford +----------------+
| | Color |
+-------+----------------+

下面的代码怎么改才能搞定?

<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" />
<DataGridTextColumn Header="Attributes" />
</DataGrid.Columns>
</DataGrid>

最佳答案

尝试使用 DataGridTemplateColumn。我为数据绑定(bind)创建了示例测试类

public class Test
{

public Test(string name, string attribute1, string attribute2)
{
Name = name;
Attributes = new Attribute(attribute1, attribute2);
}

public string Name { get; set; }
public Attribute Attributes { get; set; }
}

public class Attribute
{

public Attribute(string attribute1, string attribute2)
{
Attribute1 = attribute1;
Attribute2 = attribute2;
}

public string Attribute1 { get; set; }
public string Attribute2 { get; set; }
}

还有 xaml 中的数据网格

<DataGrid AutoGenerateColumns="False"  Name="dataGrid1" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Path=Name}" VerticalAlignment="Center" Margin="3,3,3,3"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Attributes" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50*"/>
<RowDefinition />
<RowDefinition Height="50*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Path=Attributes.Attribute1}" VerticalAlignment="Center" Margin="3,3,3,3"/>
<Line Grid.Row="1" Stroke="Black" Stretch="Fill" X2="1" VerticalAlignment="Center"/>
<TextBlock Grid.Row="2" Text="{Binding Path=Attributes.Attribute2}" VerticalAlignment="Center" Margin="3,3,3,3"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

并在code-behind中填写

List<Test> list = new List<Test>();
//populate list with your data here
dataGrid1.DataContext = list;

关于c# - 在 WPF DataGrid 中合并单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com