1. 利用 delegate
public delegate void ImageSelectedEvent(ImageArgs e);
public class ImageArgs : EventArgs
{
public string Id { get; set; }
public FishEyePanel.FishEyeData FishEyeData { get; set; }
}
public class FishEyePanel : Panel
{
//public event RoutedEventHandler ImageClick;
public event ImageSelectedEvent ImageSelected;
void image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Image im = sender as Image;
selectImageName = im.Name;
var selitem = from data in Datas
where data.Id == im.Name
select data;
List<FishEyeData> listitems = new List<FishEyeData>();
foreach (FishEyeData fishEyeData in selitem)
{
listitems.Add(fishEyeData);
}
if (listitems.Count > 0)
{
SelectedItem = (FishEyeData)listitems[0];
}
//如果没有权限则退出。
if (SelectedItem.IsEnable == false) return;
foreach (PopTip stackPanel in this.Children)
{
Image imgtemp = stackPanel.img as Image;
if (imgtemp != null)
{
if (imgtemp.Name == im.Name)
{
stackPanel.IsSelecting();
}
else
{
stackPanel.IsUnSelecting();
}
}
}
ImageArgs imageArgs = new ImageArgs() { Id = im.Name, FishEyeData = SelectedItem };
if (ImageSelected != null )
{
ImageSelected(imageArgs);
}
}
}
2.利用 Action
例如:
Public Class A
{
//声明:
public Action<T> Recieved;
// 引发:
public void OnRecived(T t)
{
if (Recieved != null)
Dispatcher.BeginInvoke(Recieved, T);
}
}
在另一个地方引用:
public class B
{
pub void Call(A a)
{
if(a==null) return ;
a.Recieved=(0)=>
{
///
///
} ;
}
}