2011-12-27 67 views

回答

1

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

如果你想比bool?返回更多,创建调用任何你想要的ShowDialog(),并返回一个包装方法返回。

1

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

protected popMyWindow() 
{ 
    MyChildWindow cw = new MyChildWindow(); 
    cw.DataContext = this.DataContext(); 
    // show the window... 
} 
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

它不同于在该页面导航到,更重要的是,它已经强烈WPF管道内输入,并且不需要你开发一个包裹ShowDialog的格局新班级做同样的事情。

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

WPF - PageFunctions. Why are they needed?

+1

这是件好事,唯一需要注意的是,应用程序必须是一个“导航应用” AFIKT – 2011-12-27 17:27:09

+0

是的,大概是WPF的祖先有它请记住,如果您需要从对话中获取某些内容,则无论如何您都隐式地位于导航上下文中。这里有一个想法:期望在502认证考试的不同环境中看到PageFunction出现*几次*。这就是为什么我使用了“WPF解决方案”这个词汇:) – 2011-12-27 19:31:06