Mic*_*lus 8 data-binding wpf xaml
好像我的multibinding有问题.
场景:
我有一个带有两个日期选择器和一个列表视图的窗口.listliew包含一些称为"条目"的数据绑定元素.条目具有名为"date"的属性.
我只想让我的listview显示日期在我的两个日期选择日期之间的条目.
我的xaml代码用于将listview绑定到条目和日期:
<ListView.ItemsSource>
<MultiBinding Converter="{StaticResource EntriesFilterConv}"
UpdateSourceTrigger="PropertyChanged">
<Binding Path="Entries" UpdateSourceTrigger="PropertyChanged"/>
<Binding ElementName="EntryFromDate" Path="SelectedDate"
UpdateSourceTrigger="PropertyChanged"/>
<Binding ElementName="EntryToDate" Path="SelectedDate"
UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
</ListView.ItemsSource>
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.当SelectedDate发生更改时调用我的转换器,但在条目更改时从不调用它.
使用这样的普通数据绑定:
<ListView ItemsSource="{Binding Entries}">
...
</ListView>
Run Code Online (Sandbox Code Playgroud)
列表视图正常更新.任何的想法?
Pro*_*fet 11
搜索了几个小时后,我找到了一个简单而体面的答案!由于ObservableCollection不会引发PropertyChanged事件而是CollectionChanged,我们只需要绑定集合的Count以在列表更改时触发事件:
<MultiBinding Converter="{Resources:ListToStringConverter}">
<Binding Path="List.Count" />
<Binding Path="List" />
</MultiBinding>
Run Code Online (Sandbox Code Playgroud)
关于这个完美工作的多绑定的原始信息:https://stackoverflow.com/a/10884002/817504
我认为以下可能会导致这种情况:如果您直接绑定到EntriesListView 将监听CollectionChanged事件,但如果这样的绑定在内部MultiBinding,唯一会导致重新评估的可能是PropertyChanged通知,对于 Entries 属性可能不存在在你的模型中。
也许您可以订阅CollectionChanged您收藏的PropertyChanged事件并引发一个事件,或者让BindingExpression您MultiBinding手动调用更新。
| 归档时间: |
|
| 查看次数: |
10028 次 |
| 最近记录: |