从当前窗口关闭前一个窗口(Close previous window from current wi

2019-10-16 16:30发布

在Silverlight中我使用的是配置文件窗口,您还可以选择删除超链接按钮,当前配置文件。 当用户点击超链接按钮,它把他们带到一个新的形式,以确认删除。 虽然删除功能工作(即配置文件已被删除的形式datatbase),我怎么能拿到的第一个窗口,当用户确认关闭?

这就是超链接calls-

private void deleteProfile(object sender, RoutedEventArgs e)
    {

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

然后从那里dProfile我想关闭profileForm的超级链接坐镇当用户点击确定-上

private void OKButton_Click(object sender, RoutedEventArgs e)
    {

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

        Close();
    }

然而, dProfile形式只能识别profileForm当我创建它的一个新的实例,我怎么可以参考我使用的是当前的?

Answer 1:

可能有一些其他的方式,但你可以尝试以下。

创建子窗口的事件

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

(虽然它在这里不需要,但你可以使用过程中的子窗口的父窗口传递值),还检查了该文章



Answer 2:

让你的自我删除表上的属性。 此属性应为:请将isDeleted。 它当用户点击OK设置为True。 然后,当您返回到主窗口,读取此属性并关闭当前窗口。

或者从子窗口的结果...

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

if (inst.ShowDialog(viewModel).Value)
{
Close();
}


文章来源: Close previous window from current window