【问题标题】:Programmatically discard changes in DataForm以编程方式丢弃 DataForm 中的更改
【发布时间】:2012-04-04 12:42:35
【问题描述】:

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

【问题讨论】:

  • 您能否展示调用保存代码的方式和时间 - 它可能在您到达关闭之前完成
  • 想法 #2 你是否将自动提交设置为 true?

标签: silverlight silverlight-toolkit dataform


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 2015-08-16
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多