C# ListView не обновляется при изменении свойства

Мой пользовательский интерфейс не обновляется, когда в ObservableCollection добавляется больше данных. В выводе консоли говорится, что произошло первое случайное исключение типа «System.NullReferenceException». Должен ли я вместо этого использовать Inotifycollectionchanged? Вот часть кода:

<ListView x:Name="ListView2" ItemsSource="{Binding Source={x:Static d:GrabUserConversationModel._Conversation}, UpdateSourceTrigger=PropertyChanged}" SelectionChanged="ListView1_SelectionChanged">

UserConversationModel.cs

public class UserConversationModel : INotifyPropertyChanged
{
    public UserConversationModel()
    {
    }

    public string Name
    { get; set; }



    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string Obj)
    {
        if (PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(Obj));
        }
    }
}

MainWindow.xaml.cs

public partial class MainWindow 
{

    static GrabUserConversationModel grabUserConversationModel;


    public MainWindow()
    {
        InitializeComponent();
        ...

    }

  static void AddData()
    {
   grabUserConversationModel.Conversation.Add(new UserConversationModel { Name = "TestName" });

    }

GrabUserConversationModel.cs

class GrabUserConversationModel
{

    public static ObservableCollection<UserConversationModel> _Conversation = new ObservableCollection<UserConversationModel>();


    public ObservableCollection<UserConversationModel> Conversation
    {
        get { return _Conversation; }
        set { _Conversation = value; }
    }
     ...

person Landon    schedule 07.02.2015    source источник
comment
Попробуйте удалить свой набор UpdateSourceTrigger на привязке. Позвольте WPF перехватывать коллекцию и перехватывать изменения коллекции, как обычно по умолчанию.   -  person TyCobb    schedule 08.02.2015


Ответы (1)


ваша собственность ObservableCollection<UserConversationModel> Conversation не реализует INotifyPropertyChanged

public ObservableCollection<UserConversationModel> Conversation
{
    get { return _Conversation; }
    set { _Conversation = value; OnPropertyChanged("Conversation");}
}
person Sagiv b.g    schedule 07.02.2015
comment
ObservableCollection<T> реализует INotifyPropertyChanged. - person TyCobb; 08.02.2015
comment
очевидно, я имел в виду использование его метода OnPropertyChanged :) - person Sagiv b.g; 08.02.2015
comment
Проблема с этим решением в его нынешнем виде заключается в том, что если вы посмотрите на его привязку, он привязывается не к этому свойству, а вместо этого к статическому полю. - person TyCobb; 08.02.2015
comment
в более общем плане проблема не работает с шаблоном MVVM :) - person Sagiv b.g; 08.02.2015
comment
в этой привязке... имя свойства неверно, я думаю (вы привязываетесь к полю, а не к свойству) - person Sagiv b.g; 08.02.2015
comment
Раньше у меня была привязка как ItemsSource='{Binding Conversation}', но я подумал, что поскольку GrabUserConversationModel является статической, она должна быть такой, как указано выше. - person Landon; 08.02.2015