0

我有一个来自 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 来获得相同的效果?

4

1 回答 1

0

我搜索了你,在这里找到了一些有用的东西: 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();
   }
}

希望这可以帮助。

于 2012-04-10T10:52:15.013 回答