【发布时间】:2011-05-12 18:22:36
【问题描述】:
有没有办法在每次更新数据绑定数据时获取访问数据绑定数据的代码?我已经看到可以挂接到 DependencyProperty 的静态 ValidateValueCallback 委托,但这是静态的,实际上,它的目的只是为了验证。
在很多情况下,当数据绑定源更新时,我需要更新其他对象。一个例子是一个动画列表框,我需要为添加到框中的第一个新项目添加动画。因此,我需要访问新更新的绑定源项,以便确定哪些项是新的以及哪些项应该在列表框之外进行动画处理。
明确地说,我有一个带有 DependencyProperty 的 UserControl,数据源绑定到外部,而 ListBox.ItemSource 绑定到内部。
我想一定有一个简单的方法可以实现这一点,但是经过几天的搜索,我仍然没有找到任何示例。
针对 DJacobson 的回复,下面是一些示例代码:
在 UserControl 内部,我们有一个 ListBox:
<ListBox Name="TheAnimatedListBox" ItemsSource="{Binding QueueItems, ElementName=UserControlName}"
ItemContainerStyle="{DynamicResource QueueItemStyle}" HorizontalContentAlignment="Stretch"
IsSynchronizedWithCurrentItem="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
MouseDown="QueueItemsListBox_MouseDown" MinHeight="300" MinWidth="300">
UserControl 没有设置 DataContext,声明如下:
<Controls:AnimatedQueue Grid.Column="0" Grid.Row="1" x:Name="FirstResponseQueue"
QueueItems="{Binding FirstResponseItems}" />
QueueItems 是在 AnimatableObservableCollection 对象类型的 UserControl 中声明的 DependencyProperty。 AnimatableObservableCollection 扩展了 ObservableCollection。
【问题讨论】:
标签: wpf listbox data-binding