3

我有一个绑定到DataGridWPF 页面中的对象列表,如果在特定列中输入的值小于某个数字,我希望直接在当前对象之后添加一个对象。

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

我一生都无法弄清楚如何绑定到底层的事件TextBox。各种站点都引用了执行此操作的能力,但没有一个站点提供相关代码。现在我一直在使用它DataGridTemplateColumnTextBox内部,但我似乎无法使用该解决方案获得当前行。

4

2 回答 2

4

为此,我在数据网格本身上使用了该CellEditEnding事件。

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

在方法中,您可以使用 aDispatcher来延迟对方法的调用,以便将值存储回绑定对象中。

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 回答