博客
关于我
[UWP 自定义控件]了解模板化控件(1):基础知识
阅读量:423 次
发布时间:2019-03-06

本文共 1635 字,大约阅读时间需要 5 分钟。

UWP模板化控件开发指南

在UWP(通用Windows应用程序)中,开发者可以通过两种方式创建自定义控件:UserControl和TemplatedControl。这个主题将重点介绍模板化控件的创建与使用,帮助开发者理解模板化控件的核心概念,并学会如何创建高扩展性的模板化控件。

1. 概述

UWP的控件提供了丰富的属性,通过这些属性可以对控件的外观进行定制,如更改Button的边框粗细或背景颜色等。然而,这种方式的定制能力仍然非常有限。通过为控件赋予新的ControlTemplate,开发者可以为控件创建全新的外观。例如,可以将普通的Button控件改造为一个圆形按钮,这将通过ControlTemplate实现。

1.1 ControlTemplate

ControlTemplate是UWP中定义控件可视结构的XAML文件。它可以包含VisualStateManager.VisualStateGroups属性,用于定义控件在不同状态下的外观变化。将ControlTemplate赋值给Control.Template即可改变控件的外观。需要注意的是,ControlTemplate的TargetType必须与使用它的控件匹配。

注意事项:UserControl不能使用ControlTemplate。

1.2 模板化控件

所有派生自Control类的控件(除了UserControl)都是模板化控件,例如Button、ComboBox等。这些模板化控件可以通过默认的ControlTemplate进行定制,而开发者也可以创建自定义的模板化控件。

模板化控件主要包含以下两部分:

  • 代码:定义控件的属性和行为。
  • DefaultStyle:定义控件的默认样式,包括属性值和ControlTemplate。某些模板化控件没有DefaultStyle,因此也被称为“无外观控件”。

2. 创建第一个模板化控件

以下将介绍如何使用VisualStudio创建一个模板化控件。

步骤1:在VisualStudio中创建新项目。 在“添加新项目”对话框中,选择“TemplatedControl”模板,输入控件名称“MyFirstControl”,然后点击“添加”。VisualStudio会自动为项目创建两个文件:MyFirstControl.cs和Themes/Generic.xaml。

步骤2:编辑MyFirstControl.cs MyFirstControl.cs文件包含以下代码:

public sealed class MyFirstControl : Control
{
public MyFirstControl()
{
this.DefaultStyleKey = typeof(MyFirstControl);
}
}

这个构造函数设置了DefaultStyleKey属性,确保控件可以找到默认的UI样式。

步骤3:编辑Themes/Generic.xaml 这个文件定义了MyFirstControl的默认样式:

ControlTemplate定义了MyFirstControl的可视结构,包括Border元素。TargetType属性指定了该ControlTemplate适用于MyFirstControl控件。

步骤4:在 MainPage.xaml中使用MyFirstControl 在XAML文件中添加:

这样就可以在应用程序中使用MyFirstControl控件。

步骤5:使用Blend修改默认样式 如果需要修改默认样式,可以使用Blend工具。在Blend中打开项目,导航到“Themes/Generic.xaml”节点,右键单击“Style”节点,选择“编辑模板”开始编辑ControlTemplate。

通过这些步骤,开发者可以轻松创建并定制模板化控件,从而充分利用UWP的强大功能。

转载地址:http://dpyuz.baihongyu.com/

你可能感兴趣的文章
Nodejs异步回调的处理方法总结
查看>>
NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
查看>>
Nodejs教程09:实现一个带接口请求的简单服务器
查看>>
nodejs服务端实现post请求
查看>>
nodejs框架,原理,组件,核心,跟npm和vue的关系
查看>>
Nodejs概览: 思维导图、核心技术、应用场景
查看>>
nodejs模块——fs模块
查看>>
Nodejs模块、自定义模块、CommonJs的概念和使用
查看>>
nodejs生成多层目录和生成文件的通用方法
查看>>
nodejs端口被占用原因及解决方案
查看>>
Nodejs简介以及Windows上安装Nodejs
查看>>
nodejs系列之express
查看>>
nodejs系列之Koa2
查看>>
Nodejs连接mysql
查看>>
nodejs连接mysql
查看>>
NodeJs连接Oracle数据库
查看>>
nodejs配置express服务器,运行自动打开浏览器
查看>>
NodeMCU教程 http请求获取Json中文乱码解决方案
查看>>
Nodemon 深入解析与使用
查看>>
NodeSession:高效且灵活的Node.js会话管理工具
查看>>