2016-03-03 52 views
0

我在我的項目中使用了複選框xaml網格我們的要求已更改現在我們正在編程構建datagrid如何在csharp中使用xaml。下面是例子,我在XAML複選框列以編程方式將DataGridCheckBoxColumn列添加到DataGrid

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.Header> 
     <CheckBox x:Name="chkHeader" /> 
      </DataGridTemplateColumn.Header> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
          <CheckBox IsChecked="{Binding IsChecked, 
          ElementName=chkHeader, Mode=OneWay, 
          UpdateSourceTrigger=PropertyChanged}" /> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

這裏編程我創建一個網格

foreach (var field in dc.AllColumns) 
{ 
    var binding = new Binding(".") { Converter = new 
     IndexingDataFieldsConverter(field) }; 
     AudioPlayBackGrid.Columns.Add(new DataGridTextColumn { Header = 
      field.Field.Description, Binding = binding}); 
    } 

和我在這裏注入複選框編程,我在XAML到目前爲止,我做

Binding columnbinding = new Binding("IsChecked"); 
    columnbinding.Mode = BindingMode.OneWay; 
    columnbinding.RelativeSource = new RelativeSource 
    (RelativeSourceMode.FindAncestor); 
    columnbinding.RelativeSource.AncestorType = datagrid.GetType(); 

    CheckBox chkHeader = new CheckBox(); 
    chkHeader.Content = "ALL"; 
    chkHeader.SetBinding(CheckBox.IsCheckedProperty, columnbinding); 
    DataGridCheckBoxColumn checkBoxColumn = new 
    DataGridCheckBoxColumn(); 
    checkBoxColumn.Header = chkHeader; 
    checkBoxColumn.Binding = columnbinding; 
    AudioPlayBackGrid.Columns.Add(checkBoxColumn); 

不知怎的,我不能在CSHARP做什麼,我在XAML電網沒有任何幫助將不勝感激

回答

1

你可以試試這種方法以編程方式添加列:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    DataGridTextColumn dgTextColumn = new DataGridTextColumn(); 
    dgTextColumn.Header = "ID"; 
    dgTextColumn.Binding = new Binding("ID"); 
    dataGrid1.Columns.Add(dgTextColumn); 

    DataGridCheckBoxColumn dgCheckBoxColumn = new DataGridCheckBoxColumn(); 
    dgCheckBoxColumn.Header = "IsChecked"; 
    dgCheckBoxColumn.Binding = new Binding("IsChecked"); 
    dataGrid1.Columns.Add(dgCheckBoxColumn); 

    DataGridTextColumn dgTextColumn2 = new DataGridTextColumn(); 
    dgTextColumn2.Header = "Name"; 
    dgTextColumn2.Binding = new Binding("Name"); 
    dataGrid1.Columns.Add(dgTextColumn2); 

    dataGrid1.Items.Add(new Item() { ID = 1, Name = "Someone1", IsChecked = true }); 
    dataGrid1.Items.Add(new Item() { ID = 2, Name = "Someone2", IsChecked = false }); 
    dataGrid1.Items.Add(new Item() { ID = 3, Name = "Someone3", IsChecked = true }); 
    dataGrid1.Items.Add(new Item() { ID = 4, Name = "Someone4", IsChecked = false }); 
} 

和型號:

public class Item 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public bool IsChecked { get; set; } 
}  
+0

@jayraja如果你覺得我的回答可以幫助你,那麼你可以接受我的回覆作爲答案簡化未來的搜索。請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – StepUp

+0

@jayraja隨時提問任何問題 – StepUp

+1

工程就像一個魅力! – iato

相關問題