3

WPF ページにバインドされたオブジェクトのリストがありDataGrid、特定の列に入力された値が特定の数より小さい場合、現在のオブジェクトの直後にオブジェクトを追加しようとしています。

<my:DataGridTextColumn Binding="{Binding Path=Hours}"/>

私は一生、基になる のイベントにバインドする方法を理解できませんTextBox。さまざまなサイトがこれを行う機能について言及していますが、関連するコードを提供しているものはありません。今のところ、その中に a を使用していますDataGridTemplateColumnTextBox、そのソリューションで現在の行を取得できないようです。

4

2 に答える 2

4

これを実現するためCellEditEndingに、データ グリッド自体でイベントを使用しました。

this.TheGrid.CellEditEnding += new EventHandler<DataGridCellEditEndingEventArgs>(TheGrid_CellEditEnding);

メソッドでは、 a を使用しDispatcherてメソッドの呼び出しを遅らせることができるため、バインドされたオブジェクトに値が格納されます。

private void TheGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
    Dispatcher.BeginInvoke(new Action(this.CellEdited));
}

をメソッドに渡してDataGridCellEditEndingEventArgs、基になる とともに編集されたセルの行と列を調べることもできますTextBox

また、データグリッドはオブジェクトに関係しているため、行インデックスはあまり関連性がなく、簡単に取得できません(私が見つけることができました)。

于 2010-01-20T21:34:26.193 に答える
1

更新されたすべてのセルと行にこのコードを使用できます。

<sdk:DataGrid ItemsSource="{Binding Collection}" CellEditEnded="DataGrid_CellEditEnded" RowEditEnded="DataGrid_RowEditEnded">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn Binding="{Binding Path=Hours}" Width="Auto" />
    </sdk:DataGrid.Columns>
</sdk:DataGrid>
于 2012-03-28T07:42:43.777 に答える