У меня есть ListView с GridView, который связан со свойствами класса, который реализует INotifyPropertyChanged, например:
<ListView Name="SubscriptionView" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="2" ItemsSource="{Binding Path=Subscriptions}">
<ListView.View>
<GridView>
<GridViewColumn Width="24" CellTemplate="{StaticResource IncludeSubscriptionTemplate}"/>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Name}" Header="Subscription"/>
<GridViewColumn Width="75" DisplayMemberBinding="{Binding Path=RecordsWritten}" Header="Records"/>
<GridViewColumn Width="Auto" CellTemplate="{StaticResource FilenameTemplate}"/>
</GridView>
</ListView.View>
</ListView>
Класс выглядит так:
public class Subscription : INotifyPropertyChanged
{
public int RecordsWritten
{
get
{
return _records;
}
set
{
_records = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("RecordsWritten"));
}
}
private int _records;
...
}
Итак, я запускаю BackgroundWorker и начинаю писать записи, обновляя свойство RecordsWritten и ожидая, что значение изменится в пользовательском интерфейсе, но это не так. На самом деле значение PropertyChanged для объектов подписки равно нулю. Это озадачивает, потому что я думал, что WPF должен подписаться на событие PropertyChanged объектов данных, которые реализуют INotifyPropertyChanged. Я что-то здесь не так делаю?