2017-06-12 32 views
-1

私のコード内のDataTableに列と行を追加/削除しています。私のxamlコードでは、ItemsSourceがDataTableにバインドされているDataGridを持っていますが、DataGridは新規または削除された列を表示しません。行は正常に動作しています。ここでコードビハインドで追加したDataGridで、DataGridに新しい列が表示されないのはなぜですか?

が背後に私のコードです:

public MainWindow() 
{ 
    InitializeComponent(); 

    this.DataContext = this; 
    this.Table = new DataTable(); 
} 

private DataTable _Table; 
public DataTable Table 
{ 
    get { return this._Table; } 
    set { this._Table = value; } 
} 

public void AddColumn() 
{ 
    this.Table.Columns.Add("ColumnTest"); 
} 

public void AddRow() 
{ 
    this.Table.Rows.Add(); 
} 

XAML:

<DataGrid Name="dgdMain" 
      Grid.Column="1" 
      AutoGenerateColumns="True" 
      ItemsSource="{Binding Path=Table.DefaultView}"> 
</DataGrid> 

行または列を追加する方法は、ボタンクリックイベントによって呼び出されます。バインドする前にいくつかの列を追加すると、列が正しく表示されます。

+0

「ItemsSource = "{Binding Table}"」を試してください。これは、ビュー 'DataContext'を正しく設定したことを前提としています。 – MoonKnight

+0

ありがとうございますが、それはまだ同じ問題です。 – stoermi

答えて

0

デフォルトではありません。あなたは、任意の新しい列を自分で追加する必要があります:

public void AddColumn() 
{ 
    this.Table.Columns.Add("ColumnTest"); 
    dgdMain.Columns.Add(new DataGridTextColumn() { Binding = new Binding("ColumnTest"), Header = "ColumnTest" }); 
} 

あなたがデータグリッドのItemsSourceを設定すると、列にのみ自動生成されています。この後にDataTableに動的に追加する新しい列は、自動的にDataGridに追加されません。

0

DataGridは、基礎となるデータテーブルデータソースのスキーマの変更を監視しません。データグリッドを更新するには、AddColumnメソッドを変更し、コードビハインドにINotifyPropertyChangedを実装します。このコードをコードビハインドからViewModelに移動する(強くお勧めします)場合は、そこにINotifyPropertyChangedも実装する必要があります。

public void AddColumn() 
{ 
    this.Table.Columns.Add("ColumnTest"); 
    OnPropertyChanged(nameof(Table)); 
} 

public event PropertyChangedEventHandler PropertyChanged; 
protected void OnPropertyChanged([CallerMemberName] string propertyName) => 
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
+1

'OnPropertyChanged();'へのその呼び出しで 'CallerMemberNameAttribute'とは何ですか? "AddColumn"のPropertyChangedを呼び出すことは、役に立たないようです。そして、 "テーブル"のためにそれを上げることは助けにならない(私はちょうどそれをテストした)。 –

+0

正しいプロパティを追加するのを忘れました。編集されました。どうも –

関連する問題