WPF编程,Page页控件的一种使用方法。

本文介绍了一种在WPF应用程序中实现页面导航的方法,通过设置按钮的Tag属性并结合后台代码实现页面间的跳转。此外,还展示了如何在Page和MainWindow之间互相调用方法,以增强组件间的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考地址:https://www.cnblogs.com/Jaasdsa/p/6164200.html 

前台: 

<Window>
     <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <WrapPanel VerticalAlignment="Center">
            <Button Tag="PageA" Name="btnA" Height="30" Width="60" Margin="5" Click="btnNav_Click">页面A</Button>
            <Button Tag="PageB" Name="btnB" Height="30" Width="60" Click="btnNav_Click">页面B</Button>
        </WrapPanel>
        <Frame Name="frmMain" NavigationUIVisibility="Hidden"></Frame>
    </Grid>
</Window>

后台按钮事件:

private void btnNav_Click(object sender, RoutedEventArgs e)
        {
            Button btn = sender as Button;
            this.frmMain.Navigate(new Uri(btn.Tag.ToString()+".xaml",UriKind.Relative));
        }

 这样无论添加多少页面,不需要修改后台方法,只需为导航按钮添加相应的Tag就可以了。(使用Name属性或其他属性也是可以的,有兴趣的可以自己试试)

 

 

3.互相调用的Window和Page

在复杂一点的WPF程序里,我们往往不仅需要页面间切换浏览,有时也需要相互调用方法,比如说在PageA中调用MainWindow的方法,代码如下: 
在MainWindow.xaml.cs中有一个公共方法:

1         public void CallFromChild(string name)
2         {
3             MessageBox.Show("Hello," + name + "!");
4         }

在PageA.xam.cs中为其添加一个属性,使其在实例化后能访问MainWindow。

1         private MainWindow _parentWin;
2         public MainWindow ParentWindow
3         {
4             get { return _parentWin; }
5             set { _parentWin = value; }
6         }

当页面切换到PageAxaml,即PageA实例化后,使得ParentWindow=MainWindow;

1     private void btnA_Click(object sender, RoutedEventArgs e)
2         {
3             PageA a = new PageA();
4             this.frmMain.Content = a;
5             a.ParentWindow = this;
6         }

注意这里页面导航的方法由this.frmMain.Navigate换成了this.frmMain.Content。然后在PageA就可以添加方法来调用MainWindow中的CallFromChild()方法了。

1         private void btnCall_Click(object sender, RoutedEventArgs e)
2         {
3             ParentWindow.CallFromChild("PageA");
4         }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值