您的位置:首页 > 其它

WPF中的Style——出自《IT168》

2010-12-06 17:54 204 查看
Style是一种修改属性值是方法。我们可以将其理解为对属性值的批处理。对批处理大家应该不会感到默认。对,通过Style我们可以批量修改属性的值。先从一个简单的Style例子开始:

<Window x:Class="Viewer3D.WindowSettins"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Viewer3D Settings"
>
<Window.Resources>
<Style TargetType="CheckBox">
<Setter Property="Height" Value="20"/>
<Setter Property="Width" Value="50"/>
<EventSetter Event="Checked" Handler="Checked_Click"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Window.Resources>
</Window>


第一感觉你可能会奇怪,为什么
Style
在资源里呢?我个人直接将其理解为

批处理

的缘故。因此
Style
是修改多个对象的属性值,它不从属于单独的元素

对象。另一个疑惑的问题是
Style
没有设置
x:Key
属性。这是一个非常关键的设置。如果我们设置了
Style

x:Key
属性,相当于在当前

Window
是资源中定义了一个名称为
x:Key
设定值的
Style
对象。记住定义的效果相当于对象。如果没有设置
x;Key
,那么这个
Style
将对属

于这个
Window
中所有
CheckBox
生效。这就起到了批处理的效果。

首先设定的是
Style

TargetType
属性,它表示我们希望修改的目标类型。然后定义一个
Setters
的集合。每个
Setter
都表示修改的一

个属性或者事件。
Property
设置属性名称,
Value
设置属性值。
Event
设置事件名称,
Handler
设置事件的响应函数名称。只要你在
Resource
做了类似的定义,在此
Window
中所使用的任何
ChekcBox
都会默认这些属性值。是不是很方便呢?我们在此定义一次,可以节省很多

代码。

也许你还会问:这样的统一修改属性太武断、霸道了吧!也许是的。我们只修改部分
Element
的属性值,而希望对某些特殊的
Element
做特殊处理。这样的需求
WPF
当然也是支持的。看看下面的代码:

<Style BasedOn="{StaticResource {x:Type CheckBox}}"
TargetType="CheckBox"
x:Key="WiderCheckBox">
<Setter Property="Width" Value="70"/>
</Style>


WPF
通过
BasedOn
对这种特殊的
Style
提供了支持。很明显,
BasedOn
的意思是我们当前的
Style
基于在资源的
CheckBox
。这里又看到了
x;Key
扩展标记。因为我们需要的是一个特例,一个特殊的
Style
对象。为了以后引用这个
Style
,我们需要
x:Key
的标识作用。其它的代码与前面类似。

定义后,引用这个特殊
Style

CheckBox
的代码是这样的:

<CheckBox Style="{StaticResource WiderCheckBox}" mce_Style="{StaticResource WiderCheckBox}">Win</CheckBox>


你已经看到,我们在
CheckBox
中指定了
Style
属性,并引用前面的
StaticResource
标记。

  这个很好懂
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: