我有一个包含5列的DataGrid。前3列是父对象的一部分,后2列是子对象的一部分。 我有一个userName列作为第6列。
当我从父对象的前3列更新任何内容时,userName会正确反映。但是当我从子对象的最后2列更新任何内容时,它不会更新userName。
我已经尝试将它绑定并在子对象中执行逻辑,并且在'save'userName为最后2列正确更新之前,但在保存之后它将恢复为以前的userName。
我的问题是,如何在保存后保留更新的userName?
XAML:
<DataGridTextColumn Header="Updated By" IsReadOnly="True" Binding="{Binding ChildObject.UpdatedUser, UpdateSourceTrigger=PropertyChanged}"/>
子对象:
public string UpdatedUser
{
get
{
var parent = this.CrawlParentFindType<ParentObject>();
if (Column4IsDirtyByValue || Column5IsDirtyByValue)
return UpdatedByUserName;
else return parent.UpdatedByUserName;
}
}
public bool Column4IsDirtyByValue { get { return FieldManager.IsFieldDirty(Column4Property); } }
public bool Column5IsDirtyByValue{ get { return FieldManager.IsFieldDirty(Column5Property); } }
public string Column4
{
get { return GetProperty(Column4Property); }
set { SetProperty(Column4Property, value); OnPropertyChanged(x => x.UpdatedUser); }
}
public string Column5
{
get { return GetProperty(Column5Property); }
set { SetProperty(Column5Property, value); OnPropertyChanged(x => x.UpdatedUser); }
}
答案 0 :(得分:0)
为什么你的代码如此复杂? 我认为原因在于OnPropertyChanged(x =&gt; x.UpdatedUser); 您调用的UpdateUser属性已更改,但该属性没有任何setter。 下面的代码应该适合你,imho:
private bool _updatedUser;
public bool UpdatedUser
{
get { return _updatedUser; }
set { this.SetProperty(ref this._updatedUser, value); }
}
private string _column5;
public string Column5
{
get { return _column5; }
set
{
this.SetProperty(ref this._column5, value);
UpdatedUserCheck();
}
}
private void UpdatedUserCheck()
{
this.UpdatedUser = // DO YOUR CHECK HERE
}