C# 如何在Silverlight中使用子窗口,使其不是异步完成的?

C# 如何在Silverlight中使用子窗口,使其不是异步完成的?,c#,silverlight,C#,Silverlight,如何在Silverlight中使用子窗口,使其不是异步完成的?在Silverlight中使用子窗口的方式(据我所知)是使用show方法: ChildWindow update_dlg = new Update(); update_dlg.Show(); 但是您无法从对话框中获取输入,因为调用是异步的,并且在子窗口打开时继续运行。您不能,您需要侦听子窗口关闭,然后获取对话框结果 发件人: 要从子窗口获取DialogResult值,请在调用窗口的代码隐藏页中处理Closed事件。在

如何在Silverlight中使用子窗口,使其不是异步完成的?在Silverlight中使用子窗口的方式(据我所知)是使用show方法:

    ChildWindow update_dlg = new Update();
    update_dlg.Show();

但是您无法从对话框中获取输入,因为调用是异步的,并且在子窗口打开时继续运行。

您不能,您需要侦听子窗口关闭,然后获取对话框结果

发件人:

要从子窗口获取DialogResult值,请在调用窗口的代码隐藏页中处理Closed事件。在关闭的事件处理程序中,将sender参数强制转换为ChildWindow或派生类以访问DialogResult属性


我喜欢将操作传递给子窗口,如果用户取消窗口,则不调用任何内容,如果用户接受窗口,则使用窗口中的参数执行操作。这样,当用户接受时要运行的代码仍然写在调用窗口中。

在我看来,有三种方法可以做到这一点

1) 在主应用程序中启动一个单独的线程,等待某个第三方类成员从true切换到false,以指示子窗口已关闭。然后在子窗口中,当关闭、确定或取消完成时,这个第三方类成员被切换为太假等(这就是我这样做的方式)

2) 在由子窗口调用的主程序中具有回调函数


3) 有点作弊,根本没有孩子的窗口。相反,在主窗口的XAML代码中,有一个矩形,看起来像一个弹出窗口或隐藏的子窗口(可视设置为折叠),它出现(但实际上变成可视),主程序中的所有其他字段都设置为非活动,直到右按钮被折叠。**

也许这个答案可以帮助您确定,除了儿童窗口之外,还有什么我应该使用的吗?例如,消息框等待用户输入。为什么我不能使用一些精心设计的消息框窗口?