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
- FrameworkElement类:为WPF元素提供一组WPF框架级属性、事件和方法;
- UIElement类:是WPF核心级实现的基类;
- Visual类:为WPF中的呈现提供支持,其中包括命中测试、坐标转换和编辑框计算;
- DependencyObject类:表示参与依赖属性系统的对象;
- DispatcherObject类:表示参与依赖属性系统的对象;
注意:
DispatcherObject是一种特殊的对象,通常与Dispatcher实例相关联;DispatcherObject只能在创建它的线程上直接被访问;
如果要从其他线程上访问DispatcherObject,我们需要使用Dispatcher提供的Invoke或BeginInvoke方法来安全地访问DispatcherObject。