Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据表单提交和取消按钮_C#_Silverlight_Dataform - Fatal编程技术网

C# 数据表单提交和取消按钮

C# 数据表单提交和取消按钮,c#,silverlight,dataform,C#,Silverlight,Dataform,Silverlight数据表单中的提交和取消按钮有问题。 起初,我不明白为什么当用户单击编辑时取消按钮没有启用。经过一些研究,我发现这是因为对象不是IEditableObject。这对“取消”按钮进行了排序,但现在“提交”按钮已决定启用,以前没有启用过,即使在值更改之后也是如此 我的问题是,如何使其启用 XAML: VMAccount: public class VMAccount : VMBase, IEditableObject { public VMAccount(Customer

Silverlight数据表单中的提交和取消按钮有问题。 起初,我不明白为什么当用户单击编辑时取消按钮没有启用。经过一些研究,我发现这是因为对象不是IEditableObject。这对“取消”按钮进行了排序,但现在“提交”按钮已决定启用,以前没有启用过,即使在值更改之后也是如此

我的问题是,如何使其启用

XAML:

VMAccount:

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
...