我有一个包含四个参数的“裁剪”类:
public class Cropping
{
public float Top { get; set; }
public float Bottom { get; set; }
public float Left { get; set; }
public float Right { get; set; }
}
在我的UI类中,我有一个裁剪类的实例,该实例在set块中具有一个方法调用,用于更新UI。
private Cropping croppingFactors;
/// <summary>Stores details on how to crop the image</summary>
public Cropping CroppingFactors
{
get { return croppingFactors; }
set
{
croppingFactors = value;
UpdateUIControls();
}
}
显然,这里的目的是在每次更改裁剪因子之一时都更新UI控件,但是,如果我更改了Cropping类中的元素,即调用
CroppingFactors.Top = 5;
CroppingFactors属性的set方法未运行。
更改此类中的元素时,如何更新UI?
编辑
我意识到set属性将不会运行,因为我尚未为裁剪类设置新值。我的问题是:当更改Cropping类中的任何元素时,如何调用'UpdateUIControls()'方法?
编辑2
多亏了Aran Mulholland的回答-这是我的完整实现:
我修改了Cropping类以实现INotifyPropertyChanged类
public class Cropping : INotifyPropertyChanged
{
private float top;
public float Top
{
get { return top; }
set
{
top = value;
NotifyPropertyChanged();
}
}
//Same for bottom, left and right
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged()
{
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
然后在UI类中,我订阅了该事件:
public ImgHost()
{
InitializeComponent();
CroppingFactors.PropertyChanged += CroppingFactors_PropertyChanged;
}
private void CroppingFactors_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
UpdateUIControls();
}
这就是我的实现,只是为了完整起见。感谢所有的答案!
在类上实现INotifyPropertyChanged接口Cropping
。从使用Cropping
类作为属性的UI类订阅属性更改事件,这样,每次在Cropping
类的任何成员上设置属性时,您都可以调用所需的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句