事件处理过程:
1。定义事件
public event EventHandler<ChangeParametersEventArgs> ChangeParameters;
PS:
三种定义事件的方法:
(1).public event EventHandler SomeEvent;
(2).public event EventHandler <EventArgs> SomeEvent;
(3). public delegate void EventDelegate(EventArgs);
public event EventDelegate SomeEvent;
2。触发事件
public void OnSelectedDeviceItem(object sender, ExecutedRoutedEventArgs e)
{
Device dd = e.Parameter as Device;
if (dd != null)
{
ParametersViewModel workspace = new ParametersViewModel(this) { Header = "设备参数", DeviceParam = dd };;
if (flag == 0)
{
Workspaces.Add(workspace);
this.SetActiveWorkspace(workspace);
flag++;
}
else
{
if (ChangeParameters != null)
this.ChangeParameters(this,new ChangeParametersEventArgs(dd));
}
}
e.Handled = true;
}
PS:参数sender传递的是对象的引用;e是包含事件数据的类的基类
3。监听事件
public ParametersViewModel(MainWinViewModel vm)
{
_deviceParam = new Device();
vm.ChangeParameters += OnChangeDeviceParameters;
}
4。事件处理程序
void OnChangeDeviceParameters(object sender, ChangeParametersEventArgs e)
{
_deviceParam = e.NewDeviceParameters;
base.OnPropertyChanged("DeviceParam");
}