日期:2014-05-17  浏览次数:20933 次

WPF,请问初始化文本
MSDN:
http://msdn.microsoft.com/zh-cn/library/windows/apps/hh700351.aspx

有这么一段话:
对于某些结构,无法使用属性语法设置结构的值:初始化文本是生成有用而且可共享的 CornerRadius、Thickness、GridLength 或 Color 资源的唯一方式。 

<Thickness x:Key="TwentyTenThickness">20,10</Thickness>

如何理解MSDN中的那句话呢?上面的那句代码,不可以这样写吗:
<Thickness x:Key="TwentyTenThickness" Left="20" Top="10" ></Thickness>

------解决方案--------------------
Quote: 引用:


<Thickness x:Key="TwentyTenThickness">20,10</Thickness>

如何理解MSDN中的那句话呢?上面的那句代码,不可以这样写吗:
<Thickness x:Key="TwentyTenThickness" Left="20" Top="10" ></Thickness> 
Quote:


按文中所说的,就是不能那样写的.

意思就是不是所有情况下属性设置和文本初始化都是能够相互替换的,在一些特殊情况下,只能使用属性设置或文本初始化中的一种方式.
------解决方案--------------------
按文中所说的,就是不能那样写的.

意思就是不是所有情况下属性设置和文本初始化都是能够相互替换的,在一些特殊情况下,只能使用属性设置或文本初始化中的一种方式. 
------解决方案--------------------
没考虑过这问题,不过你可以试试换种写法,如果不报错也设置有效,那么就可以使用,而不必纠结于所举例子,可能例子本身写得不规范。
------解决方案--------------------
Thickness没有无参的构造方法,无法构造!

但是它在类型上标记了(通过Attriibute)一个TypeConverter,引用了 ThicknessConverter 类,可以把字符串、double数值等等直接转换为 Thickness。

所以说,它虽然无法简单地构造,但是可以通过字符串转换的方法来创造。
------解决方案--------------------
WPF,请教初始化文本
http://bbs.csdn.net/topics/390413474
------解决方案--------------------
引用:
Thickness没有无参的构造方法,无法构造!

Thickness是结构体,即使没有构造函数也可以构造,结构体定义后默认值用全0字节填充,而其构造函数只不过是用来初始化成员,可有可无,这个和类必须通过new来初始化是不一样的。因此这个地方的Thickness完全可以通过楼主给的第二种方法初始化,不会有任何问题。