Telerik UI for WPF?下载30天免费试用

数据绑定支持概述

数据绑定允许您在UI和底层业务逻辑之间建立链接,并使它们保持同步。这意味着当业务层中的值发生更改时,该更改将自动填充到UI中,反之亦然。当然,为了使其工作,您必须实现适当的通知或使用已经实现通知的对象。

绑定到RadListBox涉及以下属性:

  • RadListBox。ItemsSource-获取或设置数据源(IEnumerable的内容RadListBox控制。它可以以公共语言运行库(CLR)对象的形式绑定到来自各种数据源的数据。

变更通知支持

绑定RadListBox对于业务对象的集合,您应该使用其ItemsSource财产。方法自动反映对集合的更改RadListBoxItems,集合应该实现INotifyCollectionChanged接口。WPF中有一个内置的集合,它实现了INotifyCollectionChanged接口,你可以使用它不做任何努力-这是通用的ObservableCollection.但是,要充分利用更改通知支持,您的自定义业务对象应该实现INotifyPropertyChanged接口。

考虑使用ObservableCollection或其他现有的集合类之一,如列表集合,而不是实现自己的集合。如果场景需要实现自定义集合,请使用IList接口,通过索引提供对其项的单独访问和最佳性能。

例1:创建一个对象类

公共类国家{公共字符串名称{获取;设置;} public string大写{get;设置;}}

例2:创建ViewModel

公共类MyViewModel: ViewModelBase {private ObservableCollection<国家>个国家;public ObservableCollection国家{get {if (this。国家== null){这个。国家=新的ObservableCollection<国家>();this.countries。添加(新国家(){名称=“澳大利亚”,首都=“堪培拉”});this.countries。添加(新国家(){名称=“保加利亚”,首都=“索菲亚”});this.countries。添加(新国家(){名称= "加拿大",首都= "渥太华"});this.countries。Add(new Country() { Name = "Denmark", Capital = "Copenhagen" }); this.countries.Add(new Country() { Name = "France", Capital = "Paris" }); this.countries.Add(new Country() { Name = "Germany", Capital = "Berlin" }); this.countries.Add(new Country() { Name = "India", Capital = "New Delhi" }); this.countries.Add(new Country() { Name = "Italy", Capital = "Rome" }); this.countries.Add(new Country() { Name = "Norway", Capital = "Oslo" }); this.countries.Add(new Country() { Name = "Russia", Capital = "Moscow" }); this.countries.Add(new Country() { Name = "Spain", Capital = "Madrid" }); this.countries.Add(new Country() { Name = "United Kingdom", Capital = "London" }); this.countries.Add(new Country() { Name = "United States", Capital = "Washington, D.C." }); } return countries; } } }

例3:创建RadListBox并设置其ItemsSource

<窗口。DataContext>      .

数据模板

ItemsSource属性允许RadListBox控件绑定到实现IEnumerable接口。对于集合中的每个项,为类型的容器RadListBoxItem被创建。通过使用ItemTemplateItemContainerStyle而且TemplateSelectors您可以控制动态创建的项的外观。

例4:创建DataTemplate并将TextBlock的Text属性绑定到'Name'以显示国家的名称,或将其设置为'Capital'以显示其首都

<窗口。DataContext>   <网格> <网格。Resources>        . /Resources>   . {{StaticResource ListBoxCustomItemTemplate .
除了RadListBox的ItemTemplate属性,您可以使用DisplayMemberPath属性用于控制所创建项的外观。

例5:将DisplayMemberPath设置为'Name'以显示国家的名称,或将其设置为'Capital'以显示其首都

<窗口。DataContext>     

图1:示例4和5的结果

Rad列表框ItemsSource DisplayMemberPath

如果两者都不是DisplayMemberPath也没有ItemTemplate时,项的内容将被设置为ToString ()业务对象的方法。

在本文中
Baidu
map