将复选框添加到数据网格C#中

时间:2014-02-05 10:37:09

标签: c# wpf checkbox datagrid

我正在尝试在数据网格中添加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); 

2 个答案:

答案 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);
 }