Silverlight布局与依赖属性全解析
立即解锁
发布时间: 2025-08-26 01:38:23 阅读量: 4 订阅数: 14 


Silverlight 5编程与应用实例解析
### Silverlight布局与依赖属性全解析
#### 1. Silverlight全屏模式
Silverlight应用程序具备进入全屏模式的能力,在全屏模式下,Silverlight插件会填满整个显示区域,并覆盖包括浏览器在内的所有其他应用程序。不过,全屏模式存在一些严重的限制:
1. **切换限制**:只能在响应用户输入事件时切换到全屏模式,例如用户点击按钮或按下按键。应用程序加载时无法直接切换到全屏模式,否则代码将被忽略,此限制旨在防止Silverlight应用程序误导用户。
2. **键盘访问限制**:在全屏模式下,键盘访问受限,代码仅响应Tab、Enter、Home、End、Page Up、Page Down、空格键和箭头键,其他键将被忽略。这意味着可以构建简单的全屏街机游戏,但无法使用文本框或其他输入控件,此限制是为了防止密码欺骗。不过,如果创建的是高信任级应用程序,则不受此限制。
以下是一个响应按钮点击事件切换到全屏模式的事件处理程序:
```csharp
private void Button_Click(object sender, RoutedEventArgs e)
{
Application.Current.Host.Content.IsFullScreen = true;
}
```
当应用程序进入全屏模式时,会显示包含应用程序所在Web域名的消息,用户可通过按Esc键退出全屏模式,也可将`IsFullScreen`属性设置为`false`来退出。
为了让应用程序充分利用全屏模式,顶级用户控件不应设置固定的高度或宽度,以便其能适应可用空间。还可使用缩放技术在进入全屏模式时对元素进行缩放。
另外,切换到其他应用程序也可退出Silverlight应用程序的全屏模式。若有多显示器设置,可能不希望出现此情况,可使用以下代码“固定”全屏应用程序,使其即使失去焦点也保持全屏模式:
```csharp
Application.Current.Host.Content.FullScreenOptions =
FullScreenOptions.StaysFullScreenWhenUnfocused;
```
必须在切换到全屏模式之前使用此选项,设置`IsFullScreen`属性时,用户将被提示授予应用程序固定全屏的权限。
#### 2. Silverlight依赖属性
在深入Silverlight编码之前,需要了解依赖属性和路由事件这两个关键概念。这两个概念最初出现在WPF中,Silverlight以简化形式借鉴了它们。
##### 2.1 依赖属性概述
依赖属性是一种可以直接设置(如通过代码)或由Silverlight的服务(如数据绑定、样式或动画)设置的属性。该系统的关键特性是不同属性提供者的优先级排序,例如动画运行时将优先于其他服务。这些重叠因素使系统非常灵活,也正是依赖属性名称的由来。
大多数Silverlight元素暴露的属性都是依赖属性,如`TextBlock`的`Text`属性、`Button`的`Content`属性和`Grid`的`Background`属性。Silverlight依赖属性的设计目的是像普通属性一样被使用,因为Silverlight库中的依赖属性总是由普通属性定义包装。
虽然依赖属性可以像普通属性一样在代码中读写,但它们的实现方式在底层有很大不同,主要是出于性能考虑。
##### 2.2 定义和注册依赖属性
创建依赖属性的情况相对较少,但在设计自定义Silverlight元素或为代码添加数据绑定、动画等功能时可能会用到。创建依赖属性的步骤如下:
1. **定义属性对象**:创建一个`DependencyProperty`类的实例,该对象必须在关联类中定义为静态字段。例如,`FrameworkElement`类定义了一个所有元素共享的`Margin`依赖属性:
```csharp
public class FrameworkElement: UIElement
{
public static readonly DependencyProperty MarginProperty;
...
}
```
按照惯例,定义依赖属性的字段名称为普通属性名加上`Property`后缀。
2. **注册依赖属性**:使用`DependencyProperty.Register()`方法在关联类的静态构造函数中注册依赖属性。例如,`FrameworkElement`类使用静态构造函数初始化`MarginP
0
0
复制全文
相关推荐









