0

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

我错过了什么吗?我在网上或书中找不到任何关于为什么会发生这种情况的信息。

干杯

4

1 回答 1

1

我认为你混淆了源和目标......源是你的 _downloads集合,目标是GridViewColumn. 该UpdateSourceTrigger属性控制何时由控件更新,但我假设您的网格不可编辑,因此您不需要使用此属性。

目标的更新总是即时的,没有UpdateTargetTrigger属性...

于 2009-08-16T00:35:33.333 回答