Search code examples
c#objectlistview

OnPropertyChanged not working as expected with ObjectListView


Here is my model class, the column that I am interested in this question:

public class Cell : INotifyPropertyChanged
{
    public string TestImageAspect
    {
        get { return testImageAspect; }
        set
        {
            testImageAspect = value;
            Console.WriteLine("OnPropertyChanged => testImageAspect");
            this.OnPropertyChanged("OperationResult");
        }
    }
    private string testImageAspect;
}

ImageList is prepared with required images. In the ObjectListView I set appropriate column's ImageAspectName to the property name:

enter image description here

Then on button click I run the following code to change the

  Cell c = ...;
  c.TestImageAspect = "success"; // the name exist in ImageList

After above code I see that OnPropertyChanged has been called, however UI is not updating, unless I hover to the row where it has to change, then I see new icon. I am not looking for dirty workaround, since I know few, but rather want to understand whether ObjectListView has to update UI itself. If yes, what am I doing wrong?


Solution

  • The ObjectListView property UseNotifyPropertyChanged has to be set true.

    From the official documentation

    If you set UseNotifyPropertyChanged, then ObjectListView will listen for changes on your model classes, and automatically update the rows when properties on the model classes changed. Obviously, your model objects have to implement INotifyPropertyChanged.