我有一个来自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();
}
}
希望这能有所帮助。