属性在绑定中已更改



我不明白PropertyChanged事件在绑定上下文中是如何工作的。 请考虑以下简单代码:

public class ImageClass
{
public Uri ImageUri { get; private set; }
public int ImageHeight { get; set; }
public int ImageWidth { get; set; }
public ImageClass(string location)
{
//
}        
}
public ObservableCollection<ImageClass> Images
{
get { return (ObservableCollection<ImageClass>)GetValue(ImagesProperty); }
set { SetValue(ImagesProperty, value); }
}
public static readonly DependencyProperty ImagesProperty = DependencyProperty.Register("Images", typeof(ObservableCollection<ImageClass>), typeof(ControlThumbnail), new PropertyMetadata(null));

在运行时,我对Images集合的某些元素进行了更改:

Images[i].ImageWidth = 100;

它没有任何影响 - 据我了解,因为PropertyChanged事件没有定义,然后没有触发。

我很困惑如何声明这样的事件以及我需要在事件处理程序函数中放入什么。

我试图这样做:

foreach (object item in Images)
{
if (item is INotifyPropertyChanged)
{
INotifyPropertyChanged observable = (INotifyPropertyChanged)item;
observable.PropertyChanged += new PropertyChangedEventHandler(ItemPropertyChanged);
}
}
private void ItemPropertyChanged(object sender, PropertyChangedEventArgs e)
{
}

ImageClass中实现INotifyPropertyChanged接口,如下所示:

public class ImageClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int imageWidth;
public int ImageWidth
{
get { return imageWidth; }
set
{
imageWidth = value;
PropertyChanged?.Invoke(this,
new PropertyChangedEventArgs(nameof(ImageWidth)));
}
}
...
}

相关内容

  • 没有找到相关文章

最新更新