能否将<x:Double x:Key="fontsize">50</x:Double>转为纯属性或纯元素语法?
问题解答
首先要明确:x:Double这类.NET基础值类型的XAML语法逻辑,和Label这类控件的语法逻辑不一样,具体转换情况如下:
1. 纯属性语法:无法实现
x:Double是.NET的基础值类型,它的核心就是存储数值本身,并没有公开的可写属性(比如Label的Text、FontSize这类属性)用来设置它的数值。XAML的纯属性语法依赖于对象拥有可被赋值的属性,而Double没有这样的属性入口,所以没法写成类似 <x:Double x:Key="fontsize" 属性名="50"/> 的纯属性形式。
2. 纯元素语法:你当前的写法就是对应形式
你写的:
<x:Double x:Key="fontsize">50</x:Double>
本身就是x:Double的纯元素语法。值类型的XAML元素语法就是用标签包裹它的字面量值,而x:Key是XAML的内置指令(不属于Double自身的属性),用来在资源字典中标记这个资源。
不同于Label这类复杂控件可以把属性拆分成<控件.属性>的子元素形式,Double作为值类型没有可拆分的属性,所以不存在类似 <x:Double><x:Double.XXX>50</x:Double.XXX></x:Double> 的写法——因为Double类根本没有这类属性。
内容的提问来源于stack exchange,提问作者D G
相关产品推荐
相关产品推荐

