我有一个绑定到WPF页面中DataGrid
的对象列表,如果在特定列中输入的值小于某个数字,我希望在当前的对象之后直接添加一个对象。 / p>
<my:DataGridTextColumn Binding="{Binding Path=Hours}"/>
我不能为我的生活找出如何绑定到基础TextBox
上的事件。各种站点引用了执行此操作的能力,但没有提供相关代码。目前我一直在使用DataGridTemplateColumn
内部TextBox
,但我似乎无法使用该解决方案获取当前行。
答案 0 :(得分:4)
为实现这一目标,我在数据网格本身上使用了CellEditEnding
事件。
this.TheGrid.CellEditEnding += new EventHandler<DataGridCellEditEndingEventArgs>(TheGrid_CellEditEnding);
在该方法中,您可以使用Dispatcher
来延迟对方法的调用,以便将值存储回绑定对象中。
private void TheGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
Dispatcher.BeginInvoke(new Action(this.CellEdited));
}
您还可以将DataGridCellEditEndingEventArgs
传递给方法,以便检查与基础TextBox
一起编辑的单元格的行和列。
此外,由于数据网格关注对象,因此行索引不太相关,因此不易获取(我可以找到)。
答案 1 :(得分: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>