WPF学习笔记1

最近因为工作可能会变动的原因,决定把WPF的知识先储备一波。前面先是一些理论的东西,真·笔记。

WPF和Winform 都是微软的开源win桌面开发UI框架。源码地址:https://github.com/dotnet/wpf 后面可能用得着。可以先下载看看。

先看看这两个的区别:

Winform:User32\GUI , 事件驱动 

WPF:08年正式 (Framework 3.0),数据驱动,MVVM(这个后面要详细看看)。

支持矢量图形(www.iconfont.cn)

基于DirectX,硬件好会很快,如果硬件不行,需要 通过 RenderCapablity.Tier 这个方法来获取下硬件加速等级。 

//等级 0 ,1,2
int i = (RenderCapability.Tier >> 16);//2 

分辨率无关,多点触控支持。


WPF体系结构, 正好被问到过,之前我值看到了control,今天F12到底了,来整理下。

其实这个文章已经讲的蛮好的了,我参考下,加一些自己的理解:https://blog.csdn.net/yinweimumu/article/details/80580059

基本控件集合类
abstract class DispatcherObjectDispatcher的作用是用于管理线程工作项队列,类似于Win32中的消息队列,Dispatcher的内部函数,仍然调用了传统的创建窗口类,创建窗口,建立消息泵等操作。
class DependencyObject

这个类我们熟悉呀,我们的依赖都是它。

    public class Test:DependencyObject
    {
        public int MyProperty
        {
            get { return (int)GetValue(MyPropertyProperty); }
            set { SetValue(MyPropertyProperty, value); }
        }
        public static readonly DependencyProperty MyPropertyProperty =
            DependencyProperty.Register("MyProperty", typeof(int), typeof(Test), new PropertyMetadata(default(int)));

    }

 

abstract class Visual绘图对象 - WPF所有看到的页面元素应该都是它
class UIElementUIElement 是 WPF 核心级实现的基类, 布局,输入,焦点,事件;路由事件
class FrameworkElement基于由UIElement定义的 WPF 核心级 API 构建。
FrameworkElement:ShapeLine,Path
FrameworkElement:Panel 
FrameworkElement:Control TextBlock:FrameworkElement 这货跳过了Control
Control:ContentControl单一内容,一层只能有一个 content
Control:ItemsControl 

下面具体的控件,后面再一个个单独拎出来看。刚学习嘛,就看个大方向。

然后WPF还有个不一样的地方就是页面是xaml。

<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp1"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>



<Window x:Class="WpfApp1.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:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>

    </Grid>
</Window>

多了一些固定的代码,其实也没啥可看。类似于XML的格式,理解起来也不算很难。好像说是为了前后端分离设计的来着,不过看上去让前端去写这个好像也不太现实。

页面呈现,一般可以通过逻辑树(vs自带的 文档大纲)看页面元素,或者视觉树 来看详情(通过 SNOOP)。

最后呢,我这边会再core环境下建WPF项目,目前看来和Framework环境下没啥区别。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值