WPF知识点

时间:2021-09-02 21:13:51   收藏:0   阅读:31

WPF体系结构

整个体系分为3层:
技术分享图片

  1. 托管WPF层
  1. 媒体集成层
  1. 系统层

类层次结构

技术分享图片

  1. System.Threading.DispatcherObject
    提供对WPF线程(STA单线程亲和)模型的支持;
  2. System.Windows.DependencyObject
    提供WPF特有的依赖属性特性;
  3. System.Windows.Media.Visual
    提供绘图的支持;
  4. System.Windows.UIElement
    提供对WPF本质特征的支持,如布局、输入、焦点和事件。还添加了对数据绑定、动画以及样式等核心特性的支持;
  5. System.Windows.FrameworkElement
    作为UIElement的唯一派生类,提供了更多跟尺寸布局相关的支持,以及Trigger(触发器);
  6. System. Windows.Shapes.Shape
    提供了WPF对形状类的支持;
  7. System.Windows.Controls.Control
    提供了对控件的外观和行为的支持,最重要的功能就是模板化。
  8. System. Windows. Controls. ContentControl
    是所有具有单一内容控件的基类,如BorderWindow
  9. System. Windows.Controls. ltemsControl
    是所有显示选项集合控件的基类,如ListBoxTreeView
  10. System.Windows.Controls.Panel
    是所有布局容器类的基类,如StackPanel, WrapPanel

什么是Template以及它有哪些分类?

Template(模板)用于定义或重定义控件结构

什么是Style?

样式是应用于元素的属性值的集合,是属于资源中重要的一种。样式支持触发器Trigger,支持设置依赖属性,支持关联事件处理,支持继承。

什么是Trigger以及它有哪些分类?

Trigger(触发器)是指当指定的属性、数据或事件发生变化或触发时执行的操作,一般用来调整样式,显示动画等。

Binding(数据绑定)的用法

路由事件的三种方式

路由事件

资源的分类以及它们的区别?

XAML和BAML的区别

BAML是一种压缩声明行语言,加载和解析速度比XAML快。

动画

<DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyAnimatedTranslateTransform"
                               Storyboard.TargetProperty="X"
                               Duration="0:0:10">
    <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0" />
    <LinearDoubleKeyFrame Value="350" KeyTime="0:0:2" />
    <LinearDoubleKeyFrame Value="50" KeyTime="0:0:7" />
    <LinearDoubleKeyFrame Value="200" KeyTime="0:0:8" />
    </DoubleAnimationUsingKeyFrames>

逻辑树和视觉树

多线程

有如下几种方式:

注意:ThreadIsBackground默认为false,也就是该线程对调用它的线程不产生依赖,当调用线程退出时该线程也不会结束。
ThreadPoolTaskIsBackground默认为true,来指明该线程是后台线程,当主线程退出时该线程也会结束。
BackgroundWorker支持进度事件取消消息

  1. 参考资料1
  2. 参考资料2
  3. Dispatcher参考

多线程更新UI

WPF性能优化

WPF中如何使用Winform控件

  1. 引用WindowsFormsIntegration.dllSystem.Windows.Forms.dll
  2. 引入命名空间
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
  1. 使用wfi:WindowsFormsHost作为Winform控件的容器。

原文:https://www.cnblogs.com/kuki/p/15219983.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!