<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Canvas Name="abc" Margin="0,57,0,0">
<Button Canvas.Left="400" Canvas.Top="207" Content="Button" Height="30" Name="Button2" Width="85" Click="btn_click" />
</Canvas>
</Grid>
</Window>
上面是布局的时候加了个按钮,下面的代码中会加入个程序中创建的。
Width = 64,
HorizontalAlignment = HorizontalAlignment.Left,
Margin = new Thickness(10, 10, 0, 0),
VerticalAlignment = VerticalAlignment.Top,
Visibility = Visibility.Visible
btn.Click += new RoutedEventHandler(btn_click);
abc.Children.Add(btn);
private void btn_click(object sender, RoutedEventArgs e)
Button btn = sender as Button;
if ("Button1" == btn.Name)
System.Windows.MessageBox.Show("hello");
else if ("Button2" == btn.Name)
System.Windows.MessageBox.Show("World.");
在上面的例子中,我定义了一个静态的RoutedCommand对象MyCommand,并在MainWindow的构造函数中为它
添加
了一个CommandBinding,指定了它的CanExecute和Executed
事件
的处理程序。在MyCommand_CanExecute方法中,设置了命令可以执行的条件为true,在MyCommand_Executed方法中,展示了一个简单的消息框。这样,当我们在
WPF
资源文件中定义的
按钮
被点击时,就会触发MyCommand_Executed方法,展示出消息框。
就像属性系统在
WPF
中得到了升级、进化为依赖属性一样,
事件
系统在
WPF
也得到了升级-----进化成为了路由
事件
(Routed Event),并在其基础上衍生出命令传递机制。这些机制在很大程度上减少了对程序员的束缚,让程序的设计和实现更加的灵活,模块之间的耦合度也进一步降低,这一章我们一起来领略一下新消息机制的风采。为了方便程序间对象之间的通讯常需要我们自己定义一些路由
事件
,说实话,在程序中定义这种能够在对象间“飞来飞去”的
事件
、不再接受直接
事件
的束缚感觉真的很棒!那么我们怎么才能够定义自己的路由
事件
呢?
参考:C#语言入门详解https://www.bilibili.com/video/BV1wx411K7rb?p=19刘猛铁
评论区笔记:https://www.yuque.com/yuejiangliu/dotnet/timothy-csharp-020-022
Timer 的一些成员,其中闪电符号标识的两个就是
事件
: