以编程方式放弃DataForm中的更改



我有一个来自System.Windows.Controls.Data.DataForm.Toolkit的DataForm,我需要通过编程获得与单击此DataForm上的"取消"后相同的结果。

我需要它,因为这个DataForm在ChildWindow中,如果我更改了DataForm中的某些内容并关闭了ChildWindow,那么将提交更改。这不应该那样做。当我关闭ChildWindow时,我想放弃所有更改,就像单击取消按钮后一样。

我试过

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    dfColumnInfo.CancelEdit();
    base.OnClosing(e);
}

但它不起作用。

提前谢谢。

bugfinder建议添加一个保存更改的代码。没有这样的东西,因为childWindow有一个editedObject作为DataContext

childWindow.DataContext = table;
childWindow.MyDataForm.DataContext = table.Items;
childWindow.Show();

我不知道怎么做,但DataForm的"取消"按钮恢复了我在DataForm中所做的所有更改,这是一个很好的想法。但是如何通过使用childWindow的其他按钮,或者仅仅通过关闭childWindow来获得相同的效果呢?

我找过你,在这里找到了一些有用的东西:http://forums.silverlight.net/t/112449.aspx/1

然后这样测试:

void dform_EditEnded(object sender, DataFormEditEndedEventArgs e)
{
    if (e.EditAction != DataFormEditAction.Commit)
    {
        (dform.CurrentItem as MyEntity).RejectChanges();
        return;
    }
}

为了实现这个目标,MyEntity必须是公开的,因为我在下面对其部分进行了编码。我正在分享silverlightnet论坛上的一句话"为了能够调用RejectChanges(这是System.Windows.Ria.Entity类的一个受保护的方法,我们必须将其公开"

public partial class MyEntity:Entity
{
   public void RejectChanges()
   {
       if (HasChanges)
           base.RejectChanges();
   }
}

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新