我有一个类“裁剪”,它包含4个参数中变化的元素时,调用属性的设置方法:,物业
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控件,每次的变化来裁剪因素中的一种制成,但是,如果我改变裁剪类中的元素,即,
CroppingFactors.Top = 5;
呼叫
CroppingFactors属性的设置方法未运行。
当我更改类内的元素时,如何更新UI?
编辑
我意识到,一套属性将无法运行,因为我已经不是一个新的值设置为裁剪类。 我的问题是:当我更改Cropping类中的任何元素时,如何调用'UpdateUIControls()'方法?
编辑2
多亏了阿兰穆赫兰给出的答案 - 这里是我的完整实现:
我修改了裁剪类实现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();
}
这就是我的实现,只是为了完整性。感谢所有的答案!
你有什么不工作? –
@roryap他修改'CroppingFactors'返回的'Cropping'对象 - 不设置属性。 – cubrr
“* CroppingFactors属性的设置方法未运行。*”。当然,它并没有运行 - CroppingFactors属性没有被赋予不同的值,那为什么要执行setter?请注意,您将一个不同的值分配给Cropping对象的其中一个属性,但不会为CroppingFactors属性分配不同的值... – elgonzo