自定义路由事件

路由事件相比.NET事件的优点

  1. 为在最合适的位置编写紧凑的、组织良好的用于处理事件的代码提供了灵活性。
  2. Xaml无限套娃的树状结构,可以简单的在逻辑树上堆砌出定制按钮,而不必像Winform那样,动不动就要大费周章的自定义控件,比如带文字和图片的按钮,这时候,路由事件支持在父级控件上解耦的订阅内部的全部控件的事件,减少了代码量。
<Grid x:Name="grid" MouseDown="Grid_MouseDown" ButtonBase.Click="grid_Click">
    <StackPanel>
        <RadioButton Content="RadioButton" />
        <Button Content="Button" />
        <CheckBox Content="CheckBox" />
    </StackPanel>
</Grid>
grid.AddHandler(MouseDownEvent, new MouseButtonEventHandler((sender, args) =>
{

}));
grid.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler((sender, args) =>
{

}));
  1. 如果路由事件自身拥有,直接写事件名即可,如果是自己没有的,或者附加路由事件,要加上类名。
  2. 只要背后的静态RoutedEvent是同一个,都可以被订阅,但不是所有的,要沿着树,所有的不合理,不然解析e要好多次。
  3. Tag,或 Name区分。
posted @ 2024-01-28 15:40  ValueLee  阅读(19)  评论(0)    收藏  举报