我有一个来自System.Windows.Controls.Data.DataForm.Toolkit的System.Windows.Controls.Data.DataForm.Toolkit,我需要以编程的方式获得与在这个DataForm上单击Cancel之后相同的结果。
我需要这样做,因为这个DataForm在ChildWindow中,如果我在DataForm中更改了什么并且关闭了一个ChildWindow,那么更改将被执行。这不应该是那样的。当我关闭ChildWindow时,我想要丢弃所有的更改,就像单击Cancel之后一样。
我试过了
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的Cancel按钮会恢复我在DataForm中所做的所有更改,这是一个很好的想法。但是,如何通过使用childWindow的其他按钮,或者仅仅通过关闭childWindow来获得相同的效果呢?
发布于 2012-04-10 10:52:15
我搜索了你,在这里找到了一些有用的东西: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();
}
}希望这能有所帮助。
https://stackoverflow.com/questions/10011324
复制相似问题