2016-02-18 3 views
1

У меня есть ObservableCollection, который привязываться к ListView:WPF ObservableCollection элемента

private ObservableCollection<Cost> m_Costs; 
public ObservableCollection<Cost> DatabaseRecords 
{ 
    get { return m_Costs; } 
} 

и

<ListView x:Name="ListView" ItemsSource="{Binding DatabaseRecords, UpdateSourceTrigger=PropertyChanged}"> 

Когда я добавить или удалить элемент пользовательского интерфейса будет обновить, это нормально. Но что, если я изменю свойство элемента в коллекции? У меня есть DataTrigger, которые обрабатывают форматирование элементов на основе их собственности:

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Status, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="Removed"> 
       <Setter Property="Foreground" Value="Red" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</ListView.ItemContainerStyle> 

Если изменить свойство Status интерфейс не обновляется.

m_Costs[0].Status = UIStatus.Removed; 

Любая идея, как я могу использовать привязку для обновления?

+2

Как определяется ваше свойство статуса? Я думаю, что в этом случае статус должен реализовать INotifyPropertyChanged. –

ответ

4

Для вашего ObservableCollection вам не нужно внедрять INotifyPropertyChanged, потому что это уже наблюдаемый.

Но для свойства Status вам необходимо его реализовать, иначе ваш вид не будет знать, что свойство было изменено.

Смежные вопросы