OnPropertyChanged无法按预期使用ObjectListView

时间:2015-09-18 09:34:18

标签: c# objectlistview

这是我的模型类,我对这个问题感兴趣的专栏:

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

ImageList准备了所需的图片。在ObjectListView中,我将相应列的ImageAspectName设置为属性名称:

enter image description here

然后在按钮上单击我运行以下代码来更改

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

在上面的代码之后,我看到OnPropertyChanged已被调用,但UI没有更新,除非我将鼠标悬停在必须更改的行,然后我看到新图标。我不是在寻找肮脏的解决方法,因为我知道的很少,而是想要了解ObjectListView是否必须更新UI本身。如果是的话,我做错了什么?

2 个答案:

答案 0 :(得分:4)

ObjectListView属性UseNotifyPropertyChanged必须设置为true

From the official documentation

  

如果设置了UseNotifyPropertyChanged,则ObjectListView将侦听模型类的更改,并在模型类的属性发生更改时自动更新行。显然,您的模型对象必须实现INotifyPropertyChanged。

答案 1 :(得分:0)

你可以发布XAML用于绑定 - 这可能有助于调试它。此外,您的属性名为TestImageAspect但您将“OperationResult”传递给OnPropertyChanged有点令人困惑。我不确定OnPropertyChanged是否也能正常工作。更常见的方式是: -

public class Cell : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public string TestImageAspect
    {
        get { return testImageAspect; }
        set
        {
            testImageAspect = value;
            if (PropertyChanged != null)
            {
               PropertyChanged(this, new PropertyChangedEventArgs("TestImageAspect"));
            }

        }
    }
    private string testImageAspect;
}