1

Silverlightでは、ハイパーリンクボタンで現在のプロファイルを削除するオプションを備えたプロファイルウィンドウを使用しています。ユーザーがハイパーリンクボタンを押すと、削除を確認するために新しいフォームに移動します。削除機能は機能しましたが(つまり、プロファイルがデータベースから削除されました)、ユーザーが確認したときに最初のウィンドウを閉じるにはどうすればよいですか?

これはハイパーリンクが呼び出すものです-

private void deleteProfile(object sender, RoutedEventArgs e)
    {

        deleteProfile dProfile = new deleteProfile();
        dProfile.textBlock1.Text = System.Convert.ToString("Delete " + lblMsg.Content);
        dProfile.Show();
    }

次に、ユーザーが[OK]をクリックしたときにハイパーリンクが表示されている部分dProfileを閉じます。profileForm

private void OKButton_Click(object sender, RoutedEventArgs e)
    {

        textBlock1.Text = "Profile Deleted.";
        profileForm.Close();

        Close();
    }

ただし、dProfileフォームは新しいインスタンスを作成したときにのみ認識さprofileFormれます。現在使用しているインスタンスを参照するにはどうすればよいですか?

4

2 に答える 2

2

他の方法もあるかもしれませんが、次のことを試すことができます。

子ウィンドウでイベントを作成する

public event EventHandler SubmitClicked;

OKButton_Clickイベントで

private void OKButton_Click(object sender, RoutedEventArgs e)
{
    if (SubmitClicked != null)
    {
        SubmitClicked(this, new EventArgs());
    }
}

メインウィンドウで次の手順を実行し、ChildWindowオブジェクトに対してイベントをアタッチします

deleteProfile.SubmitClicked += new EventHandler(deleteProfile _SubmitClicked);

次に、次のことができる場合:

private void deleteProfile_SubmitClicked(object sender, EventArgs e)
{
    this.Close();
}

(ここでは必須ではありませんが、プロセスを使用して子ウィンドウから親ウィンドウに値を渡すことができます)この記事も確認してください

于 2012-05-10T14:33:06.190 に答える
0

削除フォームで自分をプロパティにします。このプロパティは次のようになります:IsDeleted。ユーザーが[OK]をクリックしたときにTrueに設定します。次に、メインウィンドウに戻ったら、このプロパティを読み取り、現在のウィンドウを閉じます。

または、子ウィンドウから結果を取得します...

var viewModel = _srvLocator.GetInstance<YourViewModel>();
var inst = _srvLocator.GetInstance<IWindowManager>();

if (inst.ShowDialog(viewModel).Value)
{
Close();
}
于 2012-05-10T14:31:40.373 に答える