深入探索Silverlight中的样式与行为
立即解锁
发布时间: 2025-08-13 03:16:05 阅读量: 8 订阅数: 37 

### 深入探索Silverlight中的样式与行为
#### 1. 样式基础
在Silverlight中,样式可以组合设置多个属性,让元素呈现特定外观。例如,下面的样式为按钮设置了大字体、浅色文本,使用Georgia字体:
```xml
<UserControl.Resources>
<Style x:Key="BigButtonStyle" TargetType="Button">
<Setter Property="FontFamily" Value="Georgia" />
<Setter Property="FontSize" Value="40" />
<Setter Property="Foreground" Value="SlateGray" />
<Setter Property="Padding" Value="20" />
<Setter Property="Margin" Value="10" />
</Style>
</UserControl.Resources>
```
当无法使用简单的属性字符串设置属性值时,可使用嵌套元素替代属性。以下示例设置了按钮的背景:
```xml
<Style x:Key="BigButtonStyle" TargetType="Button">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Blue"></GradientStop>
<GradientStop Color="Yellow" Offset="1"></GradientStop>
</LinearGradientBrush>
</Setter.Value>
</Setter>
...
</Style>
```
样式还能设置变换、渲染效果和控件模板,彻底改变元素外观。
#### 2. 应用样式
每个Silverlight元素可使用单个样式或不使用样式,通过元素的`Style`属性应用样式。例如,将之前创建的样式应用到按钮:
```xml
<Button Style="{StaticResource BigButtonStyle}"
Content="A Customized Button"></Button>
```
样式系统带来诸多好处:
- 允许创建相关设置组。
- 简化标记,便于应用设置。
- 应用样式时无需担心具体设置的属性。
若之后需要更改样式设置,所有使用该样式的元素会自动更新。不过,样式设置的元素初始外观可被覆盖,但建议创建新样式来修改,以提高未来调整用户界面的灵活性。
#### 3. 动态样式
除了在标记中链接样式,还可通过编程方式设置。从页面的`Resources`集合中检索样式并应用到按钮的代码如下:
```vb
cmd.Style = CType(this.Resources("AlternateBigButtonStyle"), Style)
```
还能从项目的单独资源字典文件中检索样式。步骤如下:
1. 创建`ResourceDictionary`对象并提供正确的URI:
```vb
Dim resourceDictionary As New ResourceDictionary()
resourceDictionary.Source = New Uri("/Styles/AlternateStyles.xaml", _
UriKind.Relative)
```
2. 确保资源字典文件编译为内容文件(在属性窗口中将“生成操作”设置为“内容”)。
3. 从资源字典中检索样式并应用:
```vb
Dim newStyle As Style = CType(resourceDictionary("BigButtonStyle"), Style)
cmd.Style = newStyle
```
若要移除样式,将`Style`属性设置为`Nothing`。动态更改样式为创建可根据用户偏好改变外观的应用程序提供了可能,但实现过程较为繁琐。
#### 4. 样式继承
可通过设置样式的`BasedOn`属性实现样式继承。例如:
```xml
<UserControl.Resources>
<Style x:Key="BigButtonStyle" TargetType="Button">
<Setter Property="FontFamily" Value="Georgia" />
<Setter Property="FontSize" Value="40" />
<Setter Property="Padding" Value="20" />
<Setter Property="Margin" Value="10" />
</Style>
<Style x:Key="EmphasizedBigButtonStyle" TargetType="Button"
BasedOn="{StaticResource BigButtonStyle}">
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="5" />
</Style>
</UserControl.Resources>
```
`EmphasizedBigButtonStyle`继承了`BigButtonStyle`的属性,并添加了额外的属性。但样式继承也会带来复杂性,可能导致应用程序更脆弱,除非有特定原因,否则应谨慎使用。
#### 5. 样式组织
样式可在不同资源集合中定义:
- 可直接为特定按钮定义样式,但无法与其他元素共享:
```xml
<Button Con
```
0
0
复制全文
相关推荐










