首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式放弃DataForm中的更改

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

Stack Overflow用户
提问于 2012-04-04 12:42:35
回答 1查看 793关注 0票数 0

我有一个来自System.Windows.Controls.Data.DataForm.Toolkit的System.Windows.Controls.Data.DataForm.Toolkit,我需要以编程的方式获得与在这个DataForm上单击Cancel之后相同的结果。

我需要这样做,因为这个DataForm在ChildWindow中,如果我在DataForm中更改了什么并且关闭了一个ChildWindow,那么更改将被执行。这不应该是那样的。当我关闭ChildWindow时,我想要丢弃所有的更改,就像单击Cancel之后一样。

我试过了

代码语言:javascript
复制
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    dfColumnInfo.CancelEdit();

    base.OnClosing(e);
}

但不起作用。

提前谢谢你。

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

代码语言:javascript
复制
childWindow.DataContext = table;
childWindow.MyDataForm.DataContext = table.Items;
childWindow.Show();

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

EN

回答 1

Stack Overflow用户

发布于 2012-04-10 10:52:15

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

然后像这样测试:

代码语言:javascript
复制
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类的一种受保护的方法,我们必须公开”

代码语言:javascript
复制
public partial class MyEntity:Entity
{
   public void RejectChanges()
   {
       if (HasChanges)
           base.RejectChanges();
   }
}

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10011324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档