Welcome

首页 / 软件开发 / .NET编程技术 / 《Programming WPF》翻译 第4章 4.数据源

《Programming WPF》翻译 第4章 4.数据源2011-09-11 博客园 包建强目前为止,我们已经简单的处理了对象。然而,这并不是数据的唯一来源; XML和突然想到的相关数据库,都是流行的选择。更进一步地,由于XML或

相关数据库并不能存储数据为.NET对象,某些转换可能需要支持数据绑定, 正如你会想到的,需要数据源对象上的.NET属性。而且即使我们可以直接在xaml 中声明对象,仍然希望有一个层间接地从其他源中拉数据,甚至于将这个工作交 给一个工作线程,如果说取回是一个呆板的操作。

简而言之,为了对象的转换和加载,我们希望间接的而不是直接的声明方式 。对于这个间接方式,我们必须致力于IDataSource接口的实现,其中一种就是 数据对象源。

4.4.1数据对象源

一种对IDataSource接口的实现是,为所有的操作提供一个间接的层,这些操 作用于生成要绑定到的对象。例如,如果我们想要在Web上加载一组Person对象 ,我们需增强一些代码中的逻辑,如示例4-34。

示例4-34

namespace PersonBinding {
public class Person : INotifyPropertyChanged {}
public class People : ObservableCollection<Person> {}

public class RemotePeopleLoader : People {
public RemotePeopleLoader( ) {
// Load people from afar

}
}
}

在示例4-34中,RemotePeopleLoader类从People集合类中派生,在构造器中 检索数据,因为对象数据源希望它创建的对象是一个集合,正如示例4-35。

示例4-35

<Window.Resources>

<ObjectDataSource
x:Key="Family"
TypeName="PersonBinding.RemotePeopleLoader"
Asynchronous="True" />
</Window.Resources>
<Grid DataContext="{StaticResource Family}">

<ListBox ItemsSource="{Binding}" >
</Grid>