0
我在我的項目中使用MVVM模式。從內部類向外部類提升事件在c#
我的一流的設計是這樣的:從其他應用程序
Class Model : AbstractModel
{
InnerClass Iclass = new InnerClass();
Public String ModelProp1
{
get
{
return Iclass.prop1;
}
set
{
Iclass.prop1 = value;
}
}
public override void SetLabel(UInt16 value, int Index)
{
byte[] arr = BitConverter.GetBytes(value);
this.Iclass.IclassConfig[Index].Label = arr[0];
}
public override string DateFormat
{
get { return Iclass.intlDate.ToString(); }
set { Iclass.intlDate = Convert.ToByte(value); }
}
}
Class InnerClass
{
public byte intlDate
{
get { return this.intl_date; }
set { this.intl_date = value;
RaiseModelPropertiesChangedEvent(new ValueChangedEventArgs { Parameter_dateformat = this.intlDate });
}
private JClassa []channel_config = new JClass[2];
public JClass[] IclassConfig
{
get { return this.channel_config; }
set { this.channel_config = value; }
}
}
Public JClass
{
private byte channel_label;
public byte Label
{
get { return this.channel_label; }
set { this.channel_label = value;}
}
我得到的數據。更新後的數據來自InnerClass屬性,我希望將此更新的數據推送到Model類。
JClass屬性問題即將到來如何觸發事件,以便將更新後的數據推送給模型類。
爲此,我創建了事件在將InnerClass這樣的:
public event EventHandler<ValueChangedEventArgs> ModelPropertiesChanged;
public void RaiseModelPropertiesChangedEvent(ValueChangedEventArgs e)
{
if (ModelPropertiesChanged != null)
ModelPropertiesChanged(this, e);
}
public class ValueChangedEventArgs : EventArgs
{
public int Parameter_dateformat { get; set; }
public int Parameter_channelLabel { get; set; }
}
告訴我怎樣才能做到這一點。因爲我在Jclass有4個屬性,6個屬性是InnerClass。
但是Model類如何獲取JClass更新的屬性值。 – user2932395 2014-09-04 06:13:16
在JClass中做同樣的事情,當它的屬性值更改觸發一個事件,告訴父類有新的值。大多數事件簽名包括作爲發件人的對象,因此您可以直接從此處檢查它。既然你有JClass集合,那麼在setter中你必須遍歷每個元素來添加你的事件處理器。 – kidshaw 2014-09-04 06:27:23