プログラムの別の部分から行と列を作成する DataTable があります。この DataTable のデフォルトの DataView を DataGrid にバインドします。次の形式で DataTable を更新します。
1: DataTable に 3 つの列を追加します。
2: 以前に作成した列の DataTable に一度に 20 行のデータを追加します。
3: 1000 行分のデータを追加し続けます。
これは正しく動作します。次に、3 つの追加列を作成する新しいデータを使用して UpdateTable メソッドを呼び出し、1 行目から 1000 行目までのこれらの列にデータを入力します。DataTable は適切に更新されますが、DataGrid には新しく追加された列が表示されません。 .
行が更新されているときにバインドが正常に機能するのに、列を追加するとバインドが失敗する理由は何ですか?
簡潔にするために、DataTable の更新コードは省略しました。これが設計どおりに機能することは確かです。
参考までに: この同じコードは、サード パーティの DataGrid で問題なく動作しますが、Microsoft DataGrid を使用したいと思います。
XAML:
<DataGrid AutoGenerateColumns="True" Grid.Row="2" ItemsSource="{Binding View}"/>
仮想マシン:
public class ViewModel : INotifyPropertyChanged
{
private DataTable table = new DataTable();
public DataTable Table
{
get
{
return table;
}
set
{
table = value;
onPropertyChanged("Table");
}
}
public DataView View
{
get
{
return table.DefaultView;
}
}
public UpdateTable(UpdateData x)
{
//Algorithm to update the DataTable based on received data
//Rows are dynamically being added and columns are dynamically being added
onPropertyChanged("Table");
onPropertyChanged("View");
}
...