2011-07-30 17 views
3

質問があります。データグリッド列をコレクションにバインドする方法はありますか?WPF C#、バインド後のデータグリッド列

dataGrid1.Columns.Add(new DataGridTemplateColumn { Header="d", Binding = "RoomNumber"}); 

バインディングは私がバインドするのに使うことができますか?

それは完璧に動作しますが、私は

<DataGridTextColumn Header="Room Number" Binding="{Binding RoomNumber}"/> 

答えて

8

データグリッドの列をコードの後ろに追加したいと思う限り、その列はバインディングで動作するはずです..?ここ

あなたが望むとおりに同じ数の列を追加することができますし、各列の実行時にデータバインディングを与えることができ、あなたが指定することができます。このアプローチでは

var col = new DataGridTextColumn(); 
      col.Header = "d"; 
      col.Binding = new Binding("RoomNumber"); 
      dataGrid1.Columns.Add(col); 

の後ろのコードからDataGridの列を追加するためのサンプルスニペットですItemsSource一度....

あなたは、不要な列を避けることができるようにあなたのデータグリッドに=「偽」AutoGenerateColumnsをマークすることを確認のItemsSourceから追加されます。..

1

の背後にあるコードのコレクションにバインドするデータグリッドのitemssourceプロパティを使用して、それをバインドする必要があります。

MSDN

XAMLで例:コード内

<DataGrid ItemsSource="{Binding Path=Tracks, IsAsync=True}" AutoGenerateColumns="False" > 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Song" Width="*" Binding="{Binding Name}" /> 
      <DataGridTextColumn Header="Artist" Width="*" Binding="{Binding Artist}" /> 
      <DataGridTextColumn Header="Album" Width="*" Binding="{Binding Album}" /> 
     </DataGrid.Columns> 
</DataGrid> 

例の背後にある:

dataGrid1.ItemsSource = tracks; 
+0

リプレイに感謝します。だから私は1つのDataGrid列をコレクションの背後にあるコードにバインドできませんか? –

1

コレクションと単一の列をバインドする方法はありません。 DataGrid全体をコレクションなどのアイテムソースにバインドする必要があります。次に、各列をそのコレクションの一部とバインドします。

+0

Column.Binding =新しいバインディング( "RoomNumber"); –

3

bathineni(など)から答えていますエッセンシャ何らかの時点で、DataGridのItemsSourceプロパティをコレクションに設定している限り、正確です。

関連する問題