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

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

MSDN中讲到的“初始化文本”,我看不懂呢?请前辈指教一下,谢谢

------解决方案--------------------
是xmal的一种语法,类似参数的构造函数。会用就行
------解决方案--------------------
在msdn上说:“在概念上,初始化文本与调用具有参数的构造函数相似。 初始化文本对设置某些结构的初始值很有用。”我个人根据这句话的理解就是:初始化文本就跟我们平时所用的具有参数的构造函数相似,且主要用于对结构赋初始值。
再看后面的例子:
<UserControl ...>
  <UserControl.Resources>
    <Thickness x:Key="TwentyTenThickness">20,10</Thickness>
    ....
  </UserControl.Resources>
  ...
  <Grid Margin="{StaticResource TwentyTenThickness}">
  ...
  </Grid>
</UserControl ...>

msdn对这个例子的说明是:“这个简短示例使用初始化文本来指定 Thickness 的值,在本例中指定的值将 Left 和 Right 都设置为 20,将 Top 和 Bottom 都设置为 10。”

这时,就会有个疑问,为什么会是:Left 和 Right 都设置为 20,将 Top 和 Bottom 都设置为 10。

接着往下看,查看Thickness 的说明,你会发现有下面这样的说明:

<Thickness ...>uniform</Thickness>
- or -
<Thickness ...>left&right,top&bottom</Thickness>
- or -
<Thickness ...>left,top,right,bottom</Thickness>


很明显,例子中的Thickness采用的是第二种方式来初始化值的。到这里我暂且认为,系统就是按照上面的说明来进行初始化值的,那么上面的说明应该就是初始化文本了吧。(个人见解,有待查证)

其实在阅读过程中,我还发现,对象可以使用“元素”及“特性来进行初始化值操作,只是方式不同而已,还是Thickness这个结构:

//XAML 对象元素使用方法
<Thickness ...>uniform</Thickness>
- or -
<Thickness ...>left&right,top&bottom</Thickness>
- or -
<Thickness ...>left,top,right,bottom</Thickness>


//XAML 特性使用方法复制 
<object property="uniform"/>
- or -
<object property="left&right,top&bottom"/>
- or -
<object property="left,top,right,bottom" ... />


在msdn还补充到:“一些结构可以声明为对象元素。初始化文本不受支持,而且不能用作资源。你必须使用属性语法才能在 XAML 中将属性设置为这些值。这些类型包括:Duration、RepeatBehavior、Point、Rect 和 Size。”

其实初始化文本应该就是对结构就行初始化值操作的一种方式。

以上仅个人理解。