WPF学习笔记 - 绑定到集合

本文详细介绍了如何在WPF应用中利用ListBox的ItemSource和DisplayMemberPath属性实现集合数据的友好显示,并通过Selector控件的IsSynchronizedWithCurrentItem属性实现主从关系的用户界面同步。文中还强调了INotifyPropertyChanged接口和ObservableCollection类在数据同步中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ListBox以及所有的ItemsControl都有一个叫ItemSource的依赖属性可以作为目标属性进行绑定。

<ListBox x:Name="pictureBox"

ItemSource="{Binding Source={StaticResource photos}}"

/>

为了让目标属性与源属性保持同步,必须实现INotifyPropertyChanged接口,事实上ObservableCollection既实现了这个接口,还实现了INotifyCollectionChanged接口,所以从这个类继承的源对象可以实现集合发生改变时的同步。

为了让ListBox显示得更友好一些,可以配合ListBox的另外一个依赖属性DisplayMemberPath来绑定需要显示的内容,例如:

<ListBox x:Name="pictureBox" DisplayMemberPath="Name"

ItemSource="{Binding Source={StaticResource photos}}" (photos对象有一个Name属性)

/>

需要注意的是,ItemsControl的ItemSource属性与Items属性不能同时使用,ItemSource只有当Items属性为空时才能设置,反过来也是,但是在代码中,不管是通过哪种方式添加的项,总是通过Items属性来获得的。

 

Selector(选择控件,比如ListBox)

当把一个Selector与一个集合绑定时,WPF可以跟踪选中项,这样有一个好处是,其他绑定到这个源的控件可以利用这些信息,但不需要自己去写逻辑。这种特性可以用来创建主/从关系的用户界面,或者可以同步多个绑定到相同源的Selector控件,他们的实现是通过Selector的IsSynchronizedWithCurrentItem属性来设置的, 例如:

<ListBox IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"

ItemSource=="{Binding Source={StaticResource photos}}" />

<ListBox IsSynchronizedWithCurrentItem="True" DisplayMemberPath="DateTime"

ItemSource=="{Binding Source={StaticResource photos}}" />

<ListBox IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Size"

ItemSource=="{Binding Source={StaticResource photos}}" />

这样,当改变其中任意一个控件的选中项时都会改变另外两个控件。如果其中任何一个没有设置该属性为True,则不会影响到其他的控件。需要注意,它不支持多选中项的同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值