2014-02-05 52 views
0

我想在我的数据网格中添加3列复选框。将复选框添加到数据网格C#

首先,用方法我把一些字符串值放在两列,然后我想再添加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循环中,但后来我什么也没有得到,所以忘记了这是一个愚蠢的想法。我也尝试过一些列的其他属性,但没有找到一个适用于这种情况的工具。

另外,你也许知道一种方式来访问列的名称,并改变它们?因为我需要这些列有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

应该在循环中添加它们时添加它们。 – ethicallogics

+0

@ethicallogics嗯,也许我做错了方式。我改变了帖子,像第一次那样加入了循环。你可能会看到一些不明确的东西吗? –

+1

看看http://stackoverflow.com/questions/1754608/what-is-the-code-behind-for-datagridtemplatecolumn-and-how-to-use-it – Schuere

回答

0

您正在循环中添加相同的实例列。试试这个

for (int j = 0; j == 3; j++) 
{ 
DataGridCheckBoxColumn chbcolumn = new DataGridCheckBoxColumn(); 
tabela.Columns.Add(chbcolumn); 
} 
+0

我第一次尝试这种方式,但它是一样的。无论如何,我已经设法以另一种方式解决它。我做了3个不同的DataGridCheckBoxColumn实例...这不是最好的解决方案,但它现在可以工作:) –

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> 
相关问题