0

プログラムの別の部分から行と列を作成する 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");
        }

...
4

0 に答える 0