实现摘要列表:Silverlight数据获取与处理
立即解锁
发布时间: 2025-08-26 00:48:25 阅读量: 4 订阅数: 14 


Silverlight 4商业应用开发指南
### 实现摘要列表:Silverlight 数据获取与处理
在开发 Silverlight 应用程序时,实现摘要列表是一个常见的需求。本文将详细介绍如何在 Silverlight 中实现摘要列表,包括集合与集合视图的使用、从服务器获取数据的方法以及如何选择合适的方法等内容。
#### 1. 集合与集合视图
Silverlight 应用程序从服务器获取的数据通常是对象集合,因此了解 Silverlight 对集合的支持非常重要。
##### 1.1 Silverlight 支持的集合类型
Silverlight 支持许多常见的泛型集合类型,如 `List`、`Dictionary`、`LinkedList`、`Stack` 和 `Queue`。不过,像 `ArrayList` 和 `Hashtable` 这样的非泛型集合在 Silverlight 中并未实现,但可以在泛型集合中找到合适的替代方案。
##### 1.2 可观察集合(ObservableCollection<T>)
`ObservableCollection<T>` 是 Silverlight 和 WPF 特有的重要集合类型。它实现了 `INotifyPropertyChanged` 接口,当集合中的项目被添加或移除时,会触发 `CollectionChanged` 事件。绑定的用户界面控件会自动处理此事件,并在集合更改时更新自身。这一特性使得在代码隐藏(或 ViewModel)中更新集合时,更改会自动传播到用户界面,而无需了解用户界面的具体情况。
```mermaid
graph LR
A[ObservableCollection<T>] --> B[实现 INotifyPropertyChanged 接口]
B --> C[触发 CollectionChanged 事件]
C --> D[绑定控件自动更新]
```
##### 1.3 视图(Views)
视图是与集合相关的另一个重要数据绑定概念。视图允许在用户界面中操作集合,而不改变底层集合。常见的视图操作包括过滤、排序、分组和分页集合项。例如,将集合绑定到 `ListBox` 时,可以通过在 `TextBox` 中输入文本来过滤项目,而无需直接修改绑定的集合。
Silverlight 中有三种主要的视图类型:
- **CollectionViewSource**:它不是实际的视图,而是视图代理。通过将集合分配给其 `Source` 属性,可以从其 `View` 属性获取相应的视图(`ListCollectionView`),并通过 `Filter`、`GroupDescriptions` 和 `SortDescriptions` 等属性操作视图。
```csharp
CollectionViewSource view = new CollectionViewSource();
view.Source = productCollection;
SortDescription sortBy = new SortDescription("Name", ListSortDirection.Ascending);
view.SortDescriptions.Add(sortBy);
ProductListBox.ItemsSource = view.View;
```
- **PagedCollectionView**:它是实际的视图,可以直接创建。它具有 `CollectionViewSource` 的所有功能,还支持数据分页。
```csharp
PagedCollectionView view = new PagedCollectionView(productCollection);
SortDescription sortBy = new SortDescription("Name", ListSortDirection.Ascending);
view.SortDescriptions.Add(sortBy);
ProductListBox.ItemsSource = view;
```
- **DomainDataSourceView**:不能在代码中直接创建 `DomainDataSourceView` 对象,它由 `DomainDataSource` 控件的 `DataView` 属性公开,用于操作其管理的底层集合。
#### 2. 从服务器获取数据
在 Silverlight 应用程序中从服务器获取数据时,域上下文(Domain Context)是关键组件。有两种与域上下文交互的方法:基于 XAML 的方法和基于代码的方法。
##### 2.1 理解域上下文
域上下文类由 RIA Services 在 Silverlight 项目中为 Web 项目中的每个域服务自动生成。代码通过域上下文与服务器进行通信,域上下文本质上是客户端与域服务通信的代理。域服务上的查询操作在相应的域上下文对象上以方法的形式公开(方法名后缀为 `Query`),这些方法返回 `EntityQuery` 对象,但不会立即发起服务器请求。
##### 2.2 基于 XAML 的方法
基于 XAML 的方法的关键组件是 `DomainDataSource` 控件。它是 RIA Services 框架的一部分,允许在 XAML 中声明性地与域上下文交互。配置 `DomainDataSource` 控件时,需要为其分配域上下文并指定要调用的域操作查询方法。可以通过将控件的 `DataContext` 或 `ItemsSource` 属性绑定到 `DomainDataSource` 控件的 `Data` 属性来消费服务器数据。
操作步骤如下:
1. 打开 Visual Studio 中的“数据来源”窗口,会发现 RIA Services 为每个域上下文创建了数据源,下面列出了它们公开的实体。
2. 将实体(如 `ProductSummary` 实体)从“数据来源”窗口拖放到设计表面,会生成 `DomainDataSource` 控件和绑定控件。
```xml
<riaControls:DomainDataSource AutoLoad="True"
d:DesignData="{d:DesignInstance my1:ProductSummary,
```
0
0
复制全文
相关推荐










