一、简介
WPF用来好久,没有详细分析btnStart_Click(object sender, RoutedEventArgs e),今天和大家分享一下,点击事件这两个参数的来龙去脉。
private void btnStart_Click(object sender, RoutedEventArgs e)
{
}
界面及其代码如下:
<Window x:Class="AForge.Wpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:AForge.Wpf"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="422.669"
Height="350"
mc:Ignorable="d">
<Grid>
<Image x:Name="videoPlayer" Margin="10,0,10,70" />
<ComboBox x:Name="comboBox"
Width="167"
Height="21"
Margin="10,0,0,25"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
DisplayMemberPath="Name"
ItemsSource="{Binding VideoDevices}"
SelectedItem="{Binding CurrentDevice}" />
<Label Width="167"
Height="24"
Margin="10,0,0,46"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Content="Select video source" />
<Button Width="67"
Height="21"
Margin="213,0,0,25"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Click="btnStart_Click"
Content="Start" Background="Red" />
<Button Width="67"
Height="21"
Margin="296,0,0,25"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Click="btnStop_Click"
Content="Stop" />
</Grid>
</Window>
二、this
this是值当前Window窗口类,该类包含了属性,比如背景颜色
包含了自定义的方法,比如:
包含了系统带的方法,比如:
三、sender
指的就是Button,包含了该控件的长度和高度。
四、e(重点讨论)
1、事件源,就是Button,也就是e.OriginalSource = Button。
2、wpf中,事件是会被路由转发的。在这个过程中,事件会经过一系列的控件。
展开RoutedEvent,你会发现,点击事件的信息传递,经过了一系列的控件:
五、总结
EventArgs 本质是什么?信息的传递过程,官网上也没有给出,苦逼啊。