我有一個類「裁剪」,它包含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