我有一个ListView
不同DataTemplate
的设置来绑定。当我调用绑定表达式时,我想更新一些列(文本块和进度条的混合)UpdateSource()
。我还想在绑定的属性更改时更新其中的 1 列。
我能够让这种PropertyChanged
行为发挥作用。但是,每当我更改其他列之一的属性时,它们都会直接更新等待,而不是在UpdateSource
调用时更新。似乎它忽略了UpdateSourceTrigger
在 xaml 中设置的,并且正在使用默认行为。
我有一个实现INotifyPropertyChanged
接口的类。
我要显式更新的列的 xaml 如下所示:
<GridViewColumn Width="300" Header="Percentage" DisplayMemberBinding="{Binding Percentage, UpdateSourceTrigger=Explicit}" />
我想在属性更改时更新的 xaml:
<GridViewColumn Header="Status" Width="150" DisplayMemberBinding="{Binding Status, UpdateSourceTrigger=PropertyChanged}" />
我的绑定最初是这样设置的:
Binding downloadBinding = new Binding();
downloadBinding.Source = _downloads;
ListDownloads.SetBinding(ListView.ItemsSourceProperty, downloadBinding);
如果我执行以下代码:
_downloads[0].Percentage += 0.3;
_downloads[0].FileSize = 700.00;
_downloads[1].Percentage += 10;
列百分比列会立即更新,但我希望它等待 UpdateSource() 上的调用。
我更新源代码是:
BindingExpression be = ListDownloads.GetBindingExpression(ListView.ItemsSourceProperty);
be.UpdateSource();
我错过了什么吗?我在网上或书中找不到任何关于为什么会发生这种情况的信息。
干杯