wpf制作自定义控件,并触发外部路由事件
目的是在前端增加一个自定义控件里的button后,按下动作可以调用使用该控件的页面的事件
首先在前端增加自定义控件里加入一个button,在其cs页面里注册点击事件
var btnAdd = GetTemplateChild("btnAdd") as FlatButton;
if (btnAdd != null)
{
btnAdd.Click -= BtnAdd_Click;
btnAdd.Click += BtnAdd_Click;
}
然后定义路由以及事件
/// <summary>
/// 注册控件路由
/// </summary>
public static readonly RoutedEvent BtnAdd =
EventManager.RegisterRoutedEvent("BtnAddClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Button));
/// <summary>
/// 声明外部调用事件
/// </summary>
public event RoutedEventHandler BtnAddClick
{
add
{
AddHandler(BtnAdd, value);
}
remove
{
RemoveHandler(BtnAdd, value);
}
}
public void BtnAdd_Click(object sender, RoutedEventArgs e)
{
RoutedEventArgs args = new RoutedEventArgs(BtnAdd, this);
RaiseEvent(args);
}
最后,在使用该自定义控件的前端里加入该事件
<usercontrol BtnAddClick="BtnAddClick" ></usercontrol >
在后端写入事件触发的内容
private void BtnAddClick(object sender, RoutedEventArgs e)
{
messageBox.Show("自定义控件的button被按下");
}