我有一个来自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的Cancel按钮还原了我在DataForm中所做的所有更改,这是一个很棒的想法。 但是如何使用childWindow的其他按钮获得相同的效果,或者只是关闭childWindow?
答案 0 :(得分: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();
}
}
希望这有帮助。