`
txf2004
  • 浏览: 6853464 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XAML实例教程系列 - 类型转换器(Type Converter)

 
阅读更多

在XAML中每一个对象元素映射一个实例,而实例属性可以通过特性(Attributes)进行赋值。在实际项目开发中,对象元素的属性值可以是不同数据类型,根据需求不同,经常需要对数据类型进行转换,就需要使用XAML的类型转换器(Type Converters)。本篇将讲解XAML类型转换器的使用。

XAML类型转换器基础

在Windows 8或者Silverlight应用开发中,经常会用到类型转换器,例如对按钮的内容进行赋值,代码如下:

<Button Content=“按钮演示”/>

按钮的Content属性被赋值为字符串类型“按钮演示”。XAML语法解析器可以将字符串类型转换为对应的.Net类型,然后进行赋值操作。而如果在按钮控件中,添加内容文本颜色属性,

<Button Content=“按钮演示”Foreground=“Blue”/>

在.Net Framework中,Foreground属性的数据类型是Brush,通过SolidColorBrush对Color进行赋值,在以上代码中,XAML语法解析器需要使用类型转换器(Type Converters)将简单文本字符串“Blue”,转换为对应的“Brush”画刷类型,其颜色值为Red=0,Green=0,Blue=255,Aplha=255。 对应后台代码类型转换是:

Button button = new Button { Foreground = new SolidColorBrush(Color.FromArgb(0, 0, 255, 255)) };

这一转换过程是由.Net Framework内置类型转换器实现的,无需开发人员干涉。

转换过程主要是以下两个步骤

1. XAML语法解析器会检查需要赋值的属性是否存在内置类型转换器,如果发现对应类型转换器,则将属性的属性值字符串转换为对应的.Net类型;

2. 如果没有发现内置类型转换器,XAML语法解析器将查找元素对象中是否使用标记扩展(Markup Extensions)调用自定义类型转换器;

如果以上两个步骤都没有发现对应类型转换器的存在,XAML语法解析器将返回类型错误。

因为XAML支持标记扩展(Markup Extensions),可以在运行时对属性进行赋值,而属性值类型通常需要进行对应的类型转换才能正常使用,所以在实际项目中,经常会用到XAML类型转换器功能,不仅仅局限于项目内置类型转换器,同时还允许开发人员通过继承TypeConverter类创建自定义类型转换器。

XAML类型转换器接口实现

XAML类型转换器的语法格式和使用方法与标记扩展(Markup Extensions)相同。在XAML后台代码实现接口IValueConverter,在Convert和ConvertBack中创建转换器逻辑代码,

publicobjectConvert(objectvalue,System.Typetype,objectparameter,stringlanguage)
{
thrownewNotImplementedException(); //这里添加具体类型转换逻辑代码
}

publicobjectConvertBack(objectvalue,System.Typetype,objectparameter,stringlanguage)
{
thrownewNotImplementedException(); //如果是双向绑定,同时需要添加类型转换逻辑代码
}

XAML类型转换器简单实例

在下面的实例,创建一个Windows 8 Metro应用,应用实现修改成绩百分比,使用类型转换器实现同时修改成绩文本。

首先创建一个类文件,ValueConverter.cs,然后实现接口IValueConverter,

然后创建类型转换逻辑代码,
完成类型转换逻辑代码后,需要在XAML代码中声明引用类型转换器,然后在对象属性中应用类型转换器,
运行时,当改变成绩百分比数值,则成绩文本将数值转换成对应文本类型,运行效果如下:
今天就讲到这里,欢迎各位留言讨论。

XAML实例教程系列

XAML实例教程系列 - 标记扩展(Markup Extensions)

欢迎大家留言交流,或者加入交流学习:

22308706(一群) 超级群500人
37891947(二群) 超级群500人
100844510(三群) 高级群200人
32679922(四群) 超级群500人
23413513(五群) 高级群200人
32679955(六群) 超级群500人
88585140(八群) 超级群500人
128043302(九群 企业应用开发推荐群) 高级群200人
101364438(十群) 超级群500人

68435160(十一群 企业应用开发推荐群)超级群500人

分享到:
评论

相关推荐

    XAML-基础教程

    XAML-基础教程 pdf格式, 好东西,就不介绍了

    HTML与XAML转换源码

    HTML与XAML转换源码,里面涉及到多种转换,HTML to XAML, HTML to RTF, RTF to HTML

    Xaml-Spinners-WPF, 可用的WPF加载微调器 http.zip

    Xaml-Spinners-WPF, 可用的WPF加载微调器 http Xaml-Spinners-WPF 免费的WPF加载微调器,这里提供完整信息: http://blackspike.com/silverlight-spinner/下面是一些我们用Blend和Illustrator制作的免费 sp

    Html/Xaml 转换器

    此方案是为实现html与xaml之间进行转换设计的!

    Xamarin XAML语言教程

    Xamarin XAML语言教程

    Xamarin XAML语言教程基础语法篇

    Xamarin XAML语言教程基础语法篇

    Python库 | xaml-0.5.4-py2.py3-none-any.whl

    python库,解压后可用。 资源全名:xaml-0.5.4-py2.py3-none-any.whl

    Xamarin XAML语言教程页面布局篇

    Xamarin XAML语言教程页面布局篇

    XAML转HTML.zip

    xaml转换成html/xaml转换成html/xaml转换成html/xaml转换成html/xaml转换成html/xaml转换成html

    WPF教程 XAML教程

    wfp从零开始,xaml从零开始学习,以及mvvm设计模式

    XML&XAML基础教程

    XML&XAML基础教程,帮你理解 XML XAML 概念 概述 语法

    Svg2Xaml.zip

    一个能够将SVG文件转换为XAML格式以便WPF程序显示的控制台程序。命令使用格式为:Svg2XamlDemo.exe c:\data\input.svg,则会生成对应的XAML文件 c:\data\input.xaml

    XAML入门经典教程、参考

    XAML 入门经典教程,虽然为英文教程,但是容易理解,期待牛人翻译出来贡献大家,方便大家阅读,期待大家共同进步。

    WPF开发教程 ----WPF C# 编程 界面开发(很不错)

    WPF开发教程.rar 目录 WPF基础入门 3 1. WPF基础之体系结构 3 2. WPF基础之XAML 9 3. WPF基础之基元素 23 4. WPF基础之属性系统 26 5. WPF基础之路由事件 33 6. WPF基础之布局系统 46 7. WPF基础之样式设置和模板化...

    Microsoft.UI.Xaml.2.7-7.2208.15002.0-x64

    Microsoft.UI.Xaml.2.7_7.2208.15002.0_x64__8wekyb3d8bbwe

    PyPI 官网下载 | xaml-0.5.4-py2.py3-none-any.whl

    资源来自pypi官网。 资源全名:xaml-0.5.4-py2.py3-none-any.whl

    XAML IN A NUTSHELL

    XAML in a Nutshell covers everything necessary to design user interfaces and .NET applications that take advantage of WPF. Prerequisites such as Microsoft's new unified build system, MSBuild, and core...

    XAML-Map-Control:XAML 地图控件库

    XAML 地图控件一组用于 WPF、UWP 和 WinUI 的控件,用于渲染来自不同提供商的数字地图和各种类型的地图叠加层。 通过为其地图图块 URL 指定模板字符串,可以轻松添加地图提供者。 地图叠加层允许在地图上绘制图形...

    XAML基础+WPF实例源码

    XAML语法,具有Silverlight, WPF, Windows Phone以及Windows 8开发经验的程序员,可以将开发技能再利用,加快学习速度,提高开发效率 语言性能强大,学习曲线平缓, 有强大的开发工具支持 XAML是Windows 8 Style风格...

    ILSpy baml 直接存为 xaml

    ILSpy中baml转化为xaml的改进 ILSpy虽然能反编译WPF baml文件,但当我们另存为时,得到的baml文件。很不方便。加了一段代码解决了,这个可执行程序。代码见相关资源.文章见: ILSpy中baml转化为xaml的改进 ...

Global site tag (gtag.js) - Google Analytics