2016-05-23 9 views
1

C#WPFでプログラムでDataGridを作成するにはどうすればよいですか? 私は情報を持つ複数のデータグリッドを生成することができ - ユーザーは例えばC#WPFでプログラムでDataGridを作成する方法は?

を選択した内容に応じ:

if(true) 
{ 
    // Create a DataGrid programatically 
    DataGrid DG = new DataGrid(); 
    DG.ColumnHeader 1 = "Name" 
    DG.ColumnHeader 2 = "Age" 

    // Load info to the datagrid from somewhere 
    // Add under Name column the name "Fred" and "Tom" 
    // Add under Age column "26" and "18" 
    DG.FieldNameColumn.Row1 = "Fred" 
    DG.Age.Row1 = "26" 
    DG.FieldNameColumn.Row2 = "Tom" 
    DG.Age.Row2 = " 18" 
} 
else 
{ 
    // dont generate a DG (don't do anything here) 
} 
+0

このようにしている場合、ユーザーコントロールはDGをどこに配置するかをどのように知っていますか?代わりにユーザーコントロールを作成し、代わりにグリッドの表示を制御しないでください。 – ViVi

答えて

1

あなたがMVVMに精通していますか?私はそれを "正しい"方法で行い、アイテムがあればコレクションを保持する関連するViewModelを作成することをお勧めします。 DataGridは、そのアイテムのコレクションにバインドされます。 MainGridはあなたがDataGridを追加するコンテナの名前であることを

private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     var nameBinding = new Binding("Name") 
     { 
      Mode = BindingMode.Default, 
      UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged 
     }; 

     var ageBinding = new Binding("Age") 
     { 
      Mode = BindingMode.Default, 
      UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged 
     }; 

     var dataGrid = new DataGrid(); 
     dataGrid.Columns.Add(new DataGridTextColumn 
     { 
      Header = "Name", 
      Binding = nameBinding 
     }); 
     dataGrid.Columns.Add(new DataGridTextColumn 
     { 
      Header = "Age", 
      Binding = ageBinding 
     }); 
     dataGrid.ItemsSource = new ObservableCollection<Info> 
     { 
      new Info 
      { 
       Name = "Name 1", 
       Age = "100" 
      } 
     }; 

     MainGrid.Children.Add(dataGrid); 
    } 

    public class Info 
    { 
     public string Name { get; set; } 
     public string Age { get; set; } 
    } 

けれども、あなたの質問に答えるために、あなたはであなたが欲しいものを達成することができます。

関連する問題