使用UpdateSourceTrigger将WPF ListView绑定设置为显式奇怪行为

时间:2009-08-15 23:49:37

标签: wpf listview binding updatesourcetrigger

我有ListView设置了不同的DataTemplate绑定。我想在bindingexpression上调用UpdateSource()时更新一些列(文本块和进度条的混合)。我还想在更改属性时更新其中的一列。

我能够让PropertyChanged行为发挥作用。但每当我更改其他列之一的属性时,它们会直接等待,而不是UpdateSource调用。它似乎忽略了在xaml中设置的UpdateSourceTrigger并使用了默认行为。

我有一个实现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();

我错过了什么吗?我无法在网上找到任何关于为什么会这样做的书。

干杯

1 个答案:

答案 0 :(得分:1)

我认为你混淆了源和目标......源是你的_ downloads集合,目标是GridViewColumnUpdateSourceTrigger属性控制控件何时更新,但我认为您的网格不可编辑,因此您无需使用此属性。

目标的更新始终是立即的,没有UpdateTargetTrigger属性...