WPF编程,Page页控件的⼀种使⽤⽅法。
前台:
<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 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论