我正在尝试在数据网格中添加3列复选框。
首先,使用方法我将一些字符串值放在两列中,之后我想再添加3列复选框。
我在其他帖子中找到了这个解决方案,如下所示:
DataGridCheckBoxColumn chbcolumn = new DataGridCheckBoxColumn();
for (int j = 0; j == 3; j++)
{
tabela.Columns.Add(chbcolumn);
}
(tabela是XAML中定义的数据网格的名称,如下所示):
<DataGrid AutoGenerateColumns="True" Height="206" HorizontalAlignment="Left" Margin="12,265,0,0" Name="tabela" VerticalAlignment="Top" Width="556" SelectionChanged="tabela_SelectionChanged" Grid.RowSpan="2" />
现在这适用于添加一列,但我还需要两个。我已经尝试将该代码放入for循环中,但后来我什么都没得到,所以不经意的是这是一个愚蠢的想法。我也尝试了Columns的其他一些属性,但没有找到一个在这种情况下有效的属性。
另外,您是否知道一种访问列名称并更改它们的方法?因为我需要为这些列提供3个不同的名称。
有没有人知道解决这个问题的简单方法?
更新
我这样做,也许不是完美的解决方案,但它确实找到了工作。
DataGridCheckBoxColumn chbcolumn1 = new DataGridCheckBoxColumn();
DataGridCheckBoxColumn chbcolumn2 = new DataGridCheckBoxColumn();
DataGridCheckBoxColumn chbcolumn3 = new DataGridCheckBoxColumn();
chbcolumn1.Header = "Controller";
chbcolumn2.Header = "Area";
chbcolumn3.Header = "Service";
tabela.Columns.Add(chbcolumn1);
tabela.Columns.Add(chbcolumn2);
tabela.Columns.Add(chbcolumn3);
答案 0 :(得分:5)
不要使用代码,而是使用XAML进行尝试。可以像这样定义一个简单的复选框列
<DataGrid ItemsSource="{Binding MyDataList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="TextColumn1" Binding="{Binding FirstName}" />
<DataGridTextColumn Header="TextColumn1" Binding="{Binding LastName}" />
<DataGridTextColumn Header="TextColumn1" Binding="{Binding Address}" />
<DataGridTemplateColumn Header="CheckBoxColumn1">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsActive}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="CheckBoxColumn2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsAlive}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="CheckBoxColumn3">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsParticipating}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:0)
您正在循环中添加相同的实例列。试试这个
for (int j = 0; j == 3; j++)
{
DataGridCheckBoxColumn chbcolumn = new DataGridCheckBoxColumn();
tabela.Columns.Add(chbcolumn);
}