与WinForm不同,WPF抛弃了MDIwindow的概念,因为微软的工程师们相信主窗口加可以切换的Page,也就象是标签页似的结构,才更符合人们使用的习惯。刚好前一阶段需要设计一个软件界面,需要实现不同功能界面的切换功能,我用了MainWindow->Frame->Page的结构,在主窗口中添加了一个Frame,通过Frame的Content方法来显示各种不同的功能界面(Page),那么问题来了,如果Page中有一个按钮,该按钮用来调用主窗口的一个方法,该怎么办?举一个最简单的例子:Frame中有个Page是用来输入帐号密码的,输入帐号密码后点击确定,Frame显示另一个Page,实现过程如下:
1、新建一个WPF工程,UI如下
中间的方框是frame1
2、添加Page1
3、在Page的cs文件中添加如下代码
MainWindow parentWindow;
public MainWindow ParentWindow
{
get { return parentWindow; }
set { parentWindow = value; }
}
4、在mainwindow中用frame1.content显示page,而不是用this.frame1.Navigate
public MainWindow()
{
InitializeComponent();
Page1 page1 = new Page1();
page1.ParentWindow = this;
}
5、这样,就将Page的parentwindow设定为mainwindow,从而可以用 this.parentWindow来调用父窗口,也就是装窗口(mainwindow)中的变量和方法了。
本文介绍了在WPF中如何实现MainWindow与Page之间的通信。通过使用MainWindow中的Frame加载Page,然后在Page中设置ParentWindow为MainWindow,允许Page直接调用MainWindow的方法。以一个具体的例子说明,当在Page上输入账号密码并点击确定后,如何切换到新的Page显示。这种方法避免了WinForm中的MDIwindow,提供了一种更符合用户习惯的界面结构。

5万+

被折叠的 条评论
为什么被折叠?



