WPF ListView Связывание с UpdateSourceTrigger установлен в явном странное поведение

У меня есть ListView с различной DataTemplates, созданной для привязки. Я хочу, чтобы обновить некоторые из столбцов (смесь из TextBlock и прогресс бар), когда я звоню UpdateSource() на BindingExpression. Я также хочу обновить 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();

Я что-то упускаю? Я ничего не могу найти в Интернете или в книге о том, почему это происходит.

Ваше здоровье


person Community    schedule 15.08.2009    source источник


Ответы (1)


Я думаю, ты путаешь источник и цель ... источник вашей _downloads коллекции, цель является GridViewColumn. В UpdateSourceTrigger управления собственности, когда <сильный> источник обновляется контролем, но я предполагаю, что ваша сетка не редактируется, так что вам не нужно использовать это свойство.

Обновление мишени всегда сразу, нет собственности UpdateTargetTrigger ...

person Thomas Levesque    schedule 16.08.2009
comment
Таким образом, будет единственным способом обновить ListView будет пересвязать или что-то вдоль этих линий? - person ; 16.08.2009
comment
ListView обновляется при изменении данных, потому что ваши объекты реализации INotifyPropertyChanged - person Thomas Levesque; 16.08.2009