我有一个报表对象(即业务对象),它有几十个要填充的字段。每个字段本身都已实现INotifyPropertyChanged
。活动报告有一个名为ActiveReport
的访问者属性。
我想要做的是能够关闭当前报告,而不必打开新报告,并能够在用户再次开始输入数据时自动创建报告对象。
这是结构的粗略概念。 ActiveReport
是当前的报告。 GUI能够通过绑定直接设置子类(名称/电子邮件)的字段。我希望在设置名称时创建新的BusinessObject
,但ActiveReport为null。另外一个警告,报告对象是从XSD文件自动生成的,所以我宁愿不必修改它们。
class ControlClass {
public BusinessObject ActiveReport { get; set; }
}
class BusinessObject {
UserInfo field1 { get; set; }
}
class UserInfo : INotifyPropertyChanged {
DependencyProperty name;
DependencyProperty email;
}
我想到了以下场景:
我想在WPF中询问是否还有其他好的编程模型。
答案 0 :(得分:0)
您可以创建一种行为。 在其中,您检查(AssociatedObject.DataContext为ReportObject)是否为null 如果是,请清除所有字段/设置您的datacontext /无论
答案 1 :(得分:0)
这应该可以解决问题:
public class ControlClass
{
public BusinessObject ActiveReport { get; set; }
private UserInfo _editableUserData
public UserInfo EditableUserData
{
get { return _editableUserData; }
set
{
if (_editableUserData != null)
_editableUserData.PropertyChanged -= UserDataChanged;
_editableUserData = value;
if (_editableUserData != null)
_editableUserData.PropertyChanged += UserDataChanged;
RaisePropertyChanged("EditableUserData");
}
}
private void UserDataChanged(object sender, PropertyChangedEventArgs e)
{
if (ActiveReport == null)
ActiveReport = new BusinessObject(EditableUserData);
}
}