0

WPF アプリケーションにデータグリッドがあり、Ienumerable コレクションをデータグリッドのアイテムソースにバインドしています。

バインドした後、DataGrid に AutoGenerated 列のハンドラーを追加する必要があります。しかし、私はできません。

this.dataGrid1.ItemsSource = ineumerable_collection;
dataGrid1.AutoGeneratedColumns += new EventHandler(dataGrid1_AutoGeneratedColumns);//Not working

XAML で Autogeneratecolumns を True に設定しました。しかし、アプリケーションを実行すると、イベント ハンドラ dataGrid1_AutoGeneratedColumns が呼び出されません。私の問題を解決できれば、事前に感謝します!

4

3 に答える 3

0

しかし、アプリケーションを実行すると、イベントハンドラーが呼び出されません

最初にイベントに登録する必要があります。

dataGrid1.AutoGeneratedColumns += dataGrid1_AutoGeneratedColumns

次に、アイテムのソースを変更します。

this.dataGrid1.ItemsSource = ineumerable_collection;

このイベントはItemsSource変更後に発生し、最後の列が生成されたためです。

于 2013-01-18T05:43:48.790 に答える
0

MSDNによると:

AutoGeneratedColumnsイベントは、DataGridが列を生成しようとするたびに発生します。たとえば、DataGridが初期化されるとき、AutoGenerateColumnsがtrueに設定されるとき、またはItemsSourceがnullの場合でも、ItemsSourceが変更されるときにAutoGeneratedColumnsが発生します。

ItemsSourceを設定する前に、イベントをサブスクライブしてみてください。

于 2013-01-18T05:44:01.973 に答える
0

問題は、を変更した後にイベントハンドラーをアタッチすることです。ItemsSourceつまり、ハンドラーがアタッチされる前に列が生成されます。2つのステートメントの順序を切り替えるだけです。

dataGrid1.AutoGeneratedColumns += new EventHandler(dataGrid1_AutoGeneratedColumns);
this.dataGrid1.ItemsSource = ineumerable_collection;
于 2013-01-18T05:44:23.177 に答える