3

かなりの数の列を持ついくつかのデータベースを示す DataGrid があります。
ユーザーが新しい行を編集すると、いくつかの値が自動的に設定されることを望みます。
RowsAdded イベント ハンドラーがあるため、Windows フォーム DataGrid を使用すると簡単です。しかし、どうすればwpf DataGridでこれを処理できますか??
編集: 私の DataGrid は、Xaml で ITable であるパブリック プロパティにバインドされています。ユーザーが ComboBox でテーブルを選択すると、プロパティが対応するテーブルで更新されます。はい、自動生成列があり、ユーザーが新しい行を入力できる方法は、最後の空白行を編集することです (デフォルトの動作)。

4

3 に答える 3

3

これは LoadingRow イベントで実行できます。次のようなことを試してください:

private void myDataGrid_LoadingRow(object sender, System.Windows.Controls.DataGridRowEventArgs e)
{
    MyObject myObject = e.Row.Item as MyObject;
    if (myObject != null)
    {
        myObject.PropertyOne = "test";
        myObject.PropertyTwo = 2;
    }
}
于 2012-09-19T07:20:55.560 に答える
1

Ok i think i got it.
When a DataTable is bound to a DataGrid, a CollectionView is created in order to see it. You can get it by using the (static/shared) CollectionView.GetDefaultView(ThePropertyThatIsBound) method.
Since it implements ICollectionChanged, you can add an event handler to the CollectionChangedEvent.

In the CollectionChanged event handler, if you have a new item (e.NewItems.Count>0) you must check it against System.Windows.Data.CollectionView.NewItemPlaceholder and if it is not a place holder, then it is a brand new item, for wich i can set all default values.

于 2012-09-19T17:06:03.810 に答える