1

在 Silverlight 中,我使用的是配置文件窗口,其中包含在超链接按钮中删除当前配置文件的选项。当用户点击超链接按钮时,它会将他们带到一个新表单以确认删除。尽管删除功能已经起作用(即配置文件已从数据库中删除),但如何在用户确认时关闭第一个窗口?

这就是超链接所说的-

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,我如何引用我正在使用的当前实例?

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。当用户单击确定时将其设置为 True。然后当您返回主窗口时,读取此属性并关闭当前窗口。

或者从子窗口获取结果...

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

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