C# 数据表单提交和取消按钮
Silverlight数据表单中的提交和取消按钮有问题。 起初,我不明白为什么当用户单击编辑时取消按钮没有启用。经过一些研究,我发现这是因为对象不是IEditableObject。这对“取消”按钮进行了排序,但现在“提交”按钮已决定启用,以前没有启用过,即使在值更改之后也是如此 我的问题是,如何使其启用 XAML: VMAccount:C# 数据表单提交和取消按钮,c#,silverlight,dataform,C#,Silverlight,Dataform,Silverlight数据表单中的提交和取消按钮有问题。 起初,我不明白为什么当用户单击编辑时取消按钮没有启用。经过一些研究,我发现这是因为对象不是IEditableObject。这对“取消”按钮进行了排序,但现在“提交”按钮已决定启用,以前没有启用过,即使在值更改之后也是如此 我的问题是,如何使其启用 XAML: VMAccount: public class VMAccount : VMBase, IEditableObject { public VMAccount(Customer
public class VMAccount : VMBase, IEditableObject
{
public VMAccount(Customer customer)
{
Customer = customer;
}
private Customer m_oCustomer;
public Customer Customer
{
get { return m_oCustomer; }
set
{
if (m_oCustomer != value)
{
m_oCustomer = value;
OnPropertyChanged("Customer");
}
}
}
public event EventHandler<AsyncResultArgs> SaveCustomerSuccess;
public event EventHandler<AsyncResultArgs> SaveCustomerFailure;
#region IEditableObject Members
public void BeginEdit()
{
Customer.PropertyChanged += new PropertyChangedEventHandler(OnCustomerPropertyChanged);
Customer.ContactInfo.PropertyChanged += new PropertyChangedEventHandler(OnCustomerPropertyChanged);
}
public void CancelEdit()
{
(Customer as IRevertibleChangeTracking).RejectChanges();
(Customer.ContactInfo as IRevertibleChangeTracking).RejectChanges();
}
public void EndEdit()
{
if (Customer.HasChanges)
{
Global.Client.MainContext.SubmitChanges((lo) =>
{
HandleResult("Save Customer", lo, true, SaveCustomerSuccess, SaveCustomerFailure);
}, null);
}
}
#endregion
private void OnCustomerPropertyChanged(object sender, PropertyChangedEventArgs e)
{
OnPropertyChanged("Customer");
}
}
我输入了“OnCustomerPropertyChanged”事件处理程序,以查看是否可以强制数据表单确认Customer属性已更改,但即使事件正在触发,也没有什么区别。我已尝试删除IEditableObject以确认这就是问题所在
public class VMAccount : VMBase//, IEditableObject
...
谢谢你的帮助
编辑:我应该补充一点,客户是一个RIA实体,所以我试图编辑一个嵌套对象,直到RIA toolkit SP1发布后才能进行编辑。谢谢。您的问题可以类似于这个问题 请修改 我使用silverlight 4和RIA serivces获得了相同的isue 我决定安装WCF RIA 服务服务包1和 重新安装WCF RIA服务 WCF RIA服务SP1工具包 这两个安装程序可在以下位置找到: 直接链接到WCF RIA服务SP 1: 直接链接到WCF RIA服务 WCF RIA服务SP1工具包:
public class VMAccount : VMBase, IEditableObject
{
public VMAccount(Customer customer)
{
Customer = customer;
}
private Customer m_oCustomer;
public Customer Customer
{
get { return m_oCustomer; }
set
{
if (m_oCustomer != value)
{
m_oCustomer = value;
OnPropertyChanged("Customer");
}
}
}
public event EventHandler<AsyncResultArgs> SaveCustomerSuccess;
public event EventHandler<AsyncResultArgs> SaveCustomerFailure;
#region IEditableObject Members
public void BeginEdit()
{
Customer.PropertyChanged += new PropertyChangedEventHandler(OnCustomerPropertyChanged);
Customer.ContactInfo.PropertyChanged += new PropertyChangedEventHandler(OnCustomerPropertyChanged);
}
public void CancelEdit()
{
(Customer as IRevertibleChangeTracking).RejectChanges();
(Customer.ContactInfo as IRevertibleChangeTracking).RejectChanges();
}
public void EndEdit()
{
if (Customer.HasChanges)
{
Global.Client.MainContext.SubmitChanges((lo) =>
{
HandleResult("Save Customer", lo, true, SaveCustomerSuccess, SaveCustomerFailure);
}, null);
}
}
#endregion
private void OnCustomerPropertyChanged(object sender, PropertyChangedEventArgs e)
{
OnPropertyChanged("Customer");
}
}
public class VMBase : INotifyPropertyChanged
{
protected virtual void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
public class VMAccount : VMBase//, IEditableObject
...