Silverlight开发核心元素与应用模型解析
立即解锁
发布时间: 2025-08-26 01:18:37 阅读量: 5 订阅数: 15 

# Silverlight 开发核心元素与应用模型解析
## 1. 文本自动完成框与范围控件
### 1.1 自动完成框属性调整
在填充自动完成框(AutoCompleteBox)时,若存在耗时或异步步骤,可调整两个属性:`MinimumPrefixLength` 和 `MinimumPopupDelay`。`MinimumPrefixLength` 决定了在自动完成框给出建议前必须输入的文本量。通常,输入第一个字母后自动完成框就会提供建议,若想等输入三个字母后再给出建议,可将 `MinimumPrefixLength` 设置为 3。`MinimumPopupDelay` 属性可让自动完成框在用户最后一次按键后等待一段时间再给出建议,避免对缓慢的 Web 服务进行大量重叠调用。
### 1.2 范围控件概述
Silverlight 包含三种基于范围概念的控件:滚动条(ScrollBar)、滑块(Slider)和进度条(ProgressBar),它们都继承自 `RangeBase` 类,该类又继承自 `Control` 类。`RangeBase` 类添加了 `ValueChanged` 事件、`Tooltip` 属性以及以下范围属性:
| 属性名 | 描述 |
| ---- | ---- |
| Value | 控件的当前值,必须在最小值和最大值之间,默认从 0 开始,是一个双精度浮点数,可响应 `ValueChanged` 事件 |
| Maximum | 上限值,默认值为 1 |
| Minimum | 下限值,默认值为 0 |
| SmallChange | “小变化” 时 `Value` 属性调整的量,不同控件含义不同,对于滚动条和滑块,使用箭头键时值的变化量,默认值为 0.1 |
| LargeChange | “大变化” 时 `Value` 属性调整的量,不同控件含义不同,对于滚动条和滑块,使用 Page Up 和 Page Down 键或点击滑块两侧的条时值的变化量,默认值为 1 |
通常无需直接使用滚动条控件,更高级的 `ScrollViewer` 控件包含两个滚动条,更实用。而滑块和进度条可单独使用。
### 1.3 滑块控件
滑块是一种特殊控件,可用于设置数值,但数值本身并非特别重要。例如,在媒体播放器中通过拖动滑块设置音量,滑块拇指的大致位置表示相对音量大小,但具体数值对用户无意义。创建水平滑块的示例代码如下:
```csharp
<Slider Orientation="Horizontal" Minimum="0" Maximum="10" Width="100" />
```
与 WPF 不同,Silverlight 滑块没有添加刻度线的属性,但可使用控件模板功能更改其外观。
### 1.4 进度条控件
进度条用于指示长时间运行任务的进度,它不是用户交互控件,需代码定期增加 `Value` 属性。默认情况下,进度条的最小值为 0,最大值为 100,`Value` 对应已完成工作的百分比。若不知道任务需要多长时间,可将 `IsIndeterminate` 属性设置为 `true`,此时进度条将显示一个从左到右连续移动的阴影图案,表明有工作正在进行,但不提供已完成进度的信息。示例代码如下:
```csharp
<ProgressBar Height="18" Width="200" IsIndeterminate="True"></ProgressBar>
```
## 2. 日期控件
### 2.1 日期控件介绍
Silverlight 新增了两种日期控件:日历(Calendar)和日期选择器(DatePicker),用于让用户选择单个日期。日历控件显示类似于 Windows 操作系统中的日历,一次显示一个月,可逐月浏览或跳转到特定月份。日期选择器占用空间较小,类似于简单的文本框,可显示长或短日期格式的日期字符串,点击下拉箭头可弹出与日历控件相同的完整日历视图。
### 2.2 日期控件属性
日历和日期选择器包含多个属性,可用于确定显示哪些日期以及哪些日期可选:
| 属性 | 描述 |
| ---- | ---- |
| DisplayDateStart 和 DisplayDateEnd | 设置日历视图中显示的日期范围,用户无法导航到没有可显示日期的月份,若要显示所有日期,可将 `DisplayDateStart` 设置为 `DateTime.MinValue`,`DisplayDateEnd` 设置为 `DateTime.MaxValue` |
| BlackoutDates | 包含一组禁用的日期,这些日期在日历中不可选,若这些日期不在显示范围内或已被选中,将抛出异常,可调用 `BlackoutDates.AddDatesInPast()` 方法防止选择过去的日期 |
| SelectedDate | 提供所选日期作为 `DateTime` 对象,若未选择则为 `null`,可通过编程设置、用户点击日历中的日期或在日期选择器中输入日期字符串来设置 |
| SelectedDates | 提供所选日期的集合,仅日历控件支持,且仅在将 `SelectionMode` 属性更改为允许多个日期选择时有用 |
| DisplayDate | 确定日历视图中最初显示的日期,若为 `null`,则显示 `SelectedDate`,若两者都为 `null`,则使用当前日期,显示日期决定了日历视图的初始月份页面 |
| FirstDayOfWeek | 确定每周的第一天在日历行的最左侧显示的日期 |
| IsTodayHighlighted | 确定日历视图是否突出显示当前日期 |
| DisplayMode(仅日历控件) | 确定日历的初始显示月份,设置为 `Month` 显示标准的单月视图,设置为 `Year` 显示当前年份的月份,点击月份后显示该月的完整日历视图 |
| SelectionMode(仅日历控件) | 确定允许的日期选择类型,默认是 `SingleDate`,允许选择单个日期,其他选项包括 `None`(完全禁用选择)、`SingleRange`(可选择连续的一组日期)和 `MultipleRange`(可选择任意日期组合) |
| IsDropDownOpen(仅日期选择器) | 确定日期选择器中日历视图下拉框是否打开,可通过编程设置显示或隐藏日历 |
| SelectedDateFormat(仅日期选择器) | 确定所选日期在日期选择器文本部分的显示格式,可选择 `Short` 或 `Long`,实际显示格式基于客户端计算机的区域设置 |
### 2.3 日期控件事件
日期控件还提供了一些事件,最有用的是日期选择器的 `SelectedDateChanged` 事件和日历的 `SelectedDatesChanged` 事件,可用于拒绝特定日期选择,例如周末日期:
```csharp
private void Calendar_SelectedDatesChanged (object sender, CalendarDateChangedEventArgs e)
{
// Check all the newly added items.
foreach (DateTime selectedDate in e.AddedItems)
{
if ((selectedDate.DayOfWeek == DayOfWeek.S
```
0
0
复制全文
相关推荐










