我正在与WPF中的DataGrid进行斗争。我有一个ObservableCollection绑定它。当用户进入第一个单元格时,其他单元格将相应更新。为实现这一点,我订阅了CellEditEnding事件,以便在更改第一个单元格后强制更新。
在这种情况下,我还会像这样更新MyClass的其他属性:
private void DataGridTeilnehmer_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (!commiting)
{
commiting = true;
DataGridTeilnehmer.CommitEdit(DataGridEditingUnit.Row, false);
commiting = false;
if (e.Column.DisplayIndex == 0)
{
MyClass data = (e.Column.GetCellContent(e.Row) as ContentPresenter).Content as MyClass;
data.pass = "nothing";
}
}
问题是,网格不会自动更新,所以“不显示”,直到我进入绑定到包含“无”的属性“pass”的单元格的编辑模式。但我想立即表明。
提前致谢,
弗兰克
答案 0 :(得分:1)
正确的方法如下,目前在我的软件中使用这种方式
private void MyWPFFrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.Column.SortMemberPath.Equals("EndDate"))
{
if (((MyObject)e.Row.Item).EndDate.Equals(DateTime.MinValue))
{
((MyObject)e.Row.Item).Completed = 1;
((MyObject)e.Row.Item).CompletedDescription = "YES";
}
else
{
((MyObject)e.Row.Item).Completed = 0;
((MyObject)e.Row.Item).CompletedDescription = "NO";
}
this.MyWPFFrid.CurrentItem = ((MyObject)e.Row.Item);
if (!e.Row.IsEditing)
{
this.MyWPFFrid.Items.Refresh();
}
}
}