WPF学习笔记(23)Window、Page与Frame、ViewBox

发布于:2025-07-06 ⋅ 阅读:(15) ⋅ 点赞:(0)


一、Window

1.模态窗口与非模态窗口

在这里插入图片描述

2.Window类

属性 说 明
Title 获取或设置窗口的标题。
lcon 设获取或设置窗口的图标。
WindowStartupLocation 获取或设置窗口首次显示时的位置。
WindowState 获取或设置一个值,该值指示窗口是处于还原、最小化还是最大化状态。
WindowStyle 获取或设置窗口的样式
方法 说 明
Activate() 将窗口激活并将其带到前台
Close() 关闭窗口
ShowDialog() 显示窗口并等待窗口关闭后才返回(模态)
Show() 显示窗口并返回(非模态)
Hide() 隐藏窗口

3.示例

private void buttonMT_Click(object sender, RoutedEventArgs e)
{
    Window1 window = new Window1();
    window.ShowDialog();
}

private void buttonFMT_Click(object sender, RoutedEventArgs e)
{
 	Window1 window = new Window1();
	 //设置父窗口,父窗口关闭时,子窗口一起关闭
 	window.Owner = this;
	 // 计算模态窗口的位置,以显示器左上角为起点,左,上,右,下
 	double left = Left + (Width - window.Width) / 2;
 	double top = Top + (Height - window.Height) / 2;
 	// 设置模态窗口的位置
	 window.Left = left;
	 window.Top = top;
	 //改成 w.Show(); 可测试非模态窗口
     
    window.Show();
}
<Grid>
    <Button x:Name="buttonMT" Content="模态窗口" HorizontalAlignment="Left" Margin="111,107,0,0" VerticalAlignment="Top" Height="94" Width="189" Click="buttonMT_Click"/>
    <Button x:Name="buttonFMT" Content="非模态窗口" HorizontalAlignment="Left" Margin="481,107,0,0" VerticalAlignment="Top" Height="94" Width="189" Click="buttonFMT_Click"/>
</Grid>

在这里插入图片描述

二、Page

1.概述

Page类 表示可导航的页面,一般和 Frame 或 NavigationWindow 搭配使用
官方文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.page?view=netframework-4.8
在这里插入图片描述

2.Page类

Page类的部分属性如下:
在这里插入图片描述

三、Frame

1.概述

Frame类 是一种支持导航页面的内容控件,内部可以显示Page。
官方文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.frame?view=netframework-4.8
在这里插入图片描述

2.Frame类

Frame类的部分属性如下:
在这里插入图片描述

3.示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        frame.Content = new Page1();
    }
	//Navigate有四种重载方式,此处演示两种
    private void button2_Click(object sender, RoutedEventArgs e)
    {
        frame.Navigate(new Uri("Page2.xaml",UriKind.RelativeOrAbsolute));
    }

    private void button3_Click(object sender, RoutedEventArgs e)
    {
        frame.Navigate(new Page3());
    }

    private void buttonForword_Click(object sender, RoutedEventArgs e)
    {
        if (frame.CanGoForward) 
        {
            frame.GoForward();
        }
    }

    private void buttonBack_Click(object sender, RoutedEventArgs e)
    {
        if (frame.CanGoBack)
        { 
            frame.GoBack(); 
        }
    }
}
    <Grid>
        <Frame x:Name="frame" Background="LightGray" Width="600" Height="300" Content="" Margin="100,10,100,125"/>
        <Button x:Name="buttonForword" Content="返回" HorizontalAlignment="Left" Margin="100,337,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.288,0.263" Height="26" Width="71" Click="buttonForword_Click"/>
        <Button x:Name="buttonBack" Content="翻页" HorizontalAlignment="Left" Margin="629,337,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.288,0.263" Height="26" Width="71" Click="buttonBack_Click"/>
        <Button x:Name="button1" Content="1" HorizontalAlignment="Left" Margin="312,337,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.288,0.263" Height="26" Width="38" Click="button1_Click"/>
        <Button x:Name="button2" Content="2" HorizontalAlignment="Center" Margin="0,337,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.288,0.263" Height="26" Width="38" Click="button2_Click"/>
        <Button x:Name="button3" Content="3" HorizontalAlignment="Left" Margin="451,337,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.288,0.263" Height="26" Width="38" Click="button3_Click"/>
    </Grid>

四、ViewBox

1. 概述

ViewBox类,可以拉伸或缩放控件,使用这个控件使界面随屏幕尺寸变化而自动缩放。
官方文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.viewbox?view=netframework-4.8

在这里插入图片描述

2. 详解

ViewBox类的部分属性如下所示
在这里插入图片描述

3. 示例

在这里插入图片描述

总结

  • ShowDialog() 显示窗口并等待窗口关闭后才返回(模态),Show() 显示窗口并返回(非模态)
  • ViewBox可使控件内的子控件同步拉伸放大或缩小

网站公告

今日签到

点亮在社区的每一天
去签到