wpf window窗口通过frame做导航嵌入几个page页做动态切换,解决page页的自适应和在 page页中得到window父窗口的对象

1 篇文章 0 订阅
1 篇文章 0 订阅

 

1.在window中使用frame来嵌入page

<Frame x:Name="frame1" Margin="0,9,0,0"  Width="830"    Background="Azure" Source="page1.xaml"/>

其中 Source="page1.xaml",这个就是引用一个页到frame中

2.要实现页的切换:

在某一个按钮的点击事件中写入下语句,则点击相应按钮则会切换页

BasicData/Page2.xaml 是相对解决方案的路径,即 命名空间 BasicData 下的 Page2.xaml  (Page)

 this.frame1.Navigate(new Uri("BasicData/Page2.xaml", UriKind.Relative));

3.在页中得到父窗口的对象,并进行关闭

 var window = Window.GetWindow(this);
 window.Close();

4.页自适应frame的大小

不设置页的高宽,只是设置最小高和最小宽(或者不设置) MinWidth="800" MinHeight="750"

在父窗口有 SizeChanged="wellData_SizeChanged_1" 事件,窗口大小一变则会触发这个事件,我们在其中修改 frame的大小,则页的大小会自己变

 private void wellData_SizeChanged_1(object sender, SizeChangedEventArgs e)
        {
            this.frame1.Width = this.ActualWidth - 160;
        }

 

这些方法一定是可行的,毕竟我刚刚实现了(可能叙述不准确),新手入门,请多指正!

 

 

WPF,可以通过创建多个Page来实现多个窗口效果。 首先,在WPF项目,可以通过添加新的Page(右键项目 -> 添加 -> 新建项 -> WPF Page)来创建多个面。 然后,在MainWindow.xaml文件,可以使用Frame元素来作为容器来显示这些面。在Frame元素,设置Source属性为第一个面的URI,这样初始时就会显示第一个面。 接着,在MainWindow.xaml.cs文件,可以使用Navigate方法来切换面。通过为不同的按钮或其他交互元素绑定事件,然后在事件处理程序使用Navigate来切换到不同的面。 例如,假设我们有两个Page1.xaml和Page2.xaml: ``` // MainWindow.xaml <Window> <Grid> <Frame x:Name="mainFrame"/> </Grid> </Window> // MainWindow.xaml.cs private void Button1_Click(object sender, RoutedEventArgs e) { mainFrame.Navigate(new Uri("Page1.xaml", UriKind.Relative)); } private void Button2_Click(object sender, RoutedEventArgs e) { mainFrame.Navigate(new Uri("Page2.xaml", UriKind.Relative)); } ``` 这样,当点击Button1时,就会加载并显示Page1面;当点击Button2时,就会加载并显示Page2面。可以通过添加更多的按钮和面来实现更多窗口切换。 需要注意的是,Page是基于Window和UserControl的间抽象,因此,PageWPF并不是严格意义上的窗口。如果需要更多窗口特性,可以考虑使用Window元素来创建多个窗口,而不是使用Page
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值