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);
}

しかし、うまくいきません。

前もって感謝します。

バグファインダーは、変更を保存するコードを追加することを提案しました。childWindow には DataContext として editObject があるため、そのようなことはありません。

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 に答える