WPF笔记1

WPF是一个与分辨率无关的UI框架,使用基于矢量的呈现引擎,构建用于利用现代图形硬件。

1、用vs2022创建一个WPF项目

2、打开解决方案资源管理器
可以看到VS帮我们创建了下面这些文件:

MainWindow.xaml文件是使用xaml标记实现的程序的界面外观,通常是设计人员来编辑;
MainWindow.xaml.cs文件存放的是应用程序行为的实现代码,通常是开发人员来编辑;
因此,设计人员在实现应用程序外观的同时,开发人员可以实现应用程序的行为,这就极大提升了开发效率。

点击查看代码
//前端代码
<Window x:Class="TestWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestWPF"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>

    </Grid>
</Window>

在xamle中的x:Class,和C#中的class关键字效果相同;
xmlns:local命名空间声明local前缀;

3、WPF的父类

点击查看代码
namespace TestWPF
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

在这个项目中,创建的MainWindow类的直接父类是Window;

Grid类型的继承关系如下:

DispatcherObject类的定义如下:

控件的父类之上的父类控件至少有如下几个类型:
Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement

  1. FrameworkElement类:为WPF元素提供一组WPF框架级属性、事件和方法;
  2. UIElement类:是WPF核心级实现的基类;
  3. Visual类:为WPF中的呈现提供支持,其中包括命中测试、坐标转换和编辑框计算;
  4. DependencyObject类:表示参与依赖属性系统的对象;
  5. DispatcherObject类:表示参与依赖属性系统的对象;

注意:
DispatcherObject是一种特殊的对象,通常与Dispatcher实例相关联;DispatcherObject只能在创建它的线程上直接被访问;
如果要从其他线程上访问DispatcherObject,我们需要使用Dispatcher提供的Invoke或BeginInvoke方法来安全地访问DispatcherObject。

posted @ 2024-11-25 12:34  青云Zeo  阅读(22)  评论(0编辑  收藏  举报