Chr*_*der 2 c# wpf code-behind
我是C#初学者,我正在尝试在WPF中实现数字键盘.它由10个类似的按钮组成:
<Button Content="0" Name="button0" Click="anyButtonClicked" />
<Button Content="1" Name="button1" Click="anyButtonClicked" />
<Button Content="2" Name="button2" Click="anyButtonClicked" />
...
<Button Content="9" Name="button9" Click="anyButtonClicked" />
Run Code Online (Sandbox Code Playgroud)
处理所有这些按钮的最佳做法是什么?我是否在每个代码背后的代码中构建一个函数(这将主要是无聊并重复我自己),或者我是否构建一个函数来处理任何单击的按钮?
在第二种情况下,如何识别单击了哪个按钮?我需要访问哪些发件人对象的属性?
如果您想使用后面的代码,那么您可以将它连接到单个事件处理程序,然后您可以将发送者强制转换为Button(或FrameworkElement)并检查其Name属性.
扩展Goblin在下面的答案; 如果你想坚持使用代码和事件,你可以在父面板上定义事件:
<StackPanel Button.Click="anyButtonClicked">
<Button Content="0" Name="button0"/>
<Button Content="1" Name="button1"/>
<Button Content="2" Name="button2"/>
...
<Button Content="9" Name="button9"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
然后使用e.OriginalSource,强制转换为Button或FrameworElement来检索名称.
private void anyButtonClicked(object sender, RoutedEventArgs e)
{
var source = e.OriginalSource as FrameworkElement;
if (source == null)
return;
MessageBox.Show(source.Name);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以采用MVVM方法,使用单个命令绑定所有按钮,并传递CommandParameter以区分它们.
| 归档时间: |
|
| 查看次数: |
4229 次 |
| 最近记录: |