如何从UserControl中的自定义WPF窗口到父窗口获取结果

时间:2011-12-27 16:12:56

标签: c# .net wpf

How to use WPF window as a messagebox?这是我能够获得messagebox的方式。现在我希望它返回userControl中的某个值。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

关闭之前,在窗口中设置窗口DialogResult 您设置的值将由ShowDialog()

返回

如果要返回的值超过bool?,请创建一个调用ShowDialog()的包装器方法并返回所需的内容。

答案 1 :(得分:1)

正如@SLaks所说,使用DialogReslult ...如果这还不够并且您使用的是MVVM模型,那么您可以使用您的数据模型:将子窗口的DataContext设置为您的数据模型然后,您可以将子窗口中的控件绑定到模型上的任何数据成员 - 通常您将DataContext设置为父窗口的DataContext ...

protected popMyWindow()
{
    MyChildWindow cw = new MyChildWindow();
    cw.DataContext = this.DataContext();
    // show the window...
}

答案 2 :(得分:1)

针对这些问题的WPF解决方案是“页面功能”。

PageFunction是WPF中定义的新术语。它使用户能够导航到特定页面并执行任务,然后导航回调用者页面并显示结果。它的行为与Modal Dialogbox类似,区别在于PageFunction不会显示为弹出窗口,而是显示在与调用者相同的页面中。

来源:http://blogs.msdn.com/b/marthami/archive/2007/10/02/how-to-use-pagefunction-to-create-dialog-behavior-in-wpf.aspx

它与ShowDialog的包装模式的不同之处在于页面被导航到,更重要的是,它已经在WPF管道中强类型,并且不需要你开发一个新类来做同样的事情。 / p>

这里有一个解释StackOverflow线程......

WPF - PageFunctions. Why are they needed?