Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从当前窗口关闭上一个窗口_C#_Silverlight_Childwindow - Fatal编程技术网

C# 从当前窗口关闭上一个窗口

C# 从当前窗口关闭上一个窗口,c#,silverlight,childwindow,C#,Silverlight,Childwindow,在Silverlight中,我使用了一个配置文件窗口,可以选择在超链接按钮中删除当前配置文件。当用户点击超链接按钮时,它会将他们带到一个新表单以确认删除。虽然删除功能已起作用(即已从datatbase中删除配置文件),但如何在用户确认后关闭第一个窗口 这就是超链接所称的- private void deleteProfile(object sender, RoutedEventArgs e) { deleteProfile dProfile = new deletePr

在Silverlight中,我使用了一个配置文件窗口,可以选择在超链接按钮中删除当前配置文件。当用户点击超链接按钮时,它会将他们带到一个新表单以确认删除。虽然删除功能已起作用(即已从datatbase中删除配置文件),但如何在用户确认后关闭第一个窗口

这就是超链接所称的-

private void deleteProfile(object sender, RoutedEventArgs e)
    {

        deleteProfile dProfile = new deleteProfile();
        dProfile.textBlock1.Text = System.Convert.ToString("Delete " + lblMsg.Content);
        dProfile.Show();
    }
然后从那里开始,当用户单击ok时,我想关闭超链接所在的
profileForm
-

private void OKButton_Click(object sender, RoutedEventArgs e)
    {

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

        Close();
    }

但是,
dProfile
表单仅识别
profileForm
当我创建它的新实例时,如何引用我正在使用的当前实例?

使您自己成为删除表单上的属性。 该财产应为:IsDeleted。 当用户单击“确定”时,将其设置为True。 然后,当您返回主窗口时,读取此属性并关闭当前窗口

或者从子窗口获取结果

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

if (inst.ShowDialog(viewModel).Value)
{
Close();
}
var viewModel=\u srvLocator.GetInstance();
var inst=_srvLocator.GetInstance();
if(inst.ShowDialog(viewModel).Value)
{
Close();
}

可能还有其他方法,但您可以尝试以下方法

在子窗口中创建事件

public event EventHandler SubmitClicked;
在“确定按钮\单击”事件中

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

(虽然这里不需要,但您可以使用该过程将值从子窗口传递到父窗口)出于兴趣,我在Silverlight应用程序的主页上有一个列表框,它有一个列表框,当用户选择一个项目时,打开profileForm,然后第三阶段是dProfile表单。当用户在“数据配置文件”窗体上单击“确定”时,是否可以刷新主页面上的列表框?只是说列表框与一个Web服务调用相链接。@Jambo如果我理解正确,那么请确定,在主页面上的事件中,不要调用“关闭”,而是执行例行程序刷新列表视图。@Jambo,嗯,我不确定发生了什么,您可能会在deleteProfile_SubmitClicked事件中发布一个新问题,或者查看社区中是否有人提出了一些建议