这是我的模型类,我对这个问题感兴趣的专栏:
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设置为属性名称:
然后在按钮上单击我运行以下代码来更改
Cell c = ...;
c.TestImageAspect = "success"; // the name exist in ImageList
在上面的代码之后,我看到OnPropertyChanged
已被调用,但UI没有更新,除非我将鼠标悬停在必须更改的行,然后我看到新图标。我不是在寻找肮脏的解决方法,因为我知道的很少,而是想要了解ObjectListView是否必须更新UI本身。如果是的话,我做错了什么?
答案 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;
}