如何使用带参数的函数作为事件处理程序

本文关键字:事件处理 程序 函数 何使用 参数 | 更新日期: 2023-09-27 18:16:49

我使用Blend(我是非常新的)来创建XAML。我有一行代码调用下面的函数writeC:

<Button x:Name="key_c" Content="c" HorizontalAlignment="Left" Height="60" 
    Margin="243,188.667,0,0" VerticalAlignment="Top" Width="60" FontWeight="Bold"
    FontFamily="Century Gothic" FontSize="21.333" Foreground="Black" 
    Click="writeC">

这很好。但是,我想将其更改为使用参数"a""A"调用函数WriteChar,以便它调用以下c#函数:

private void writeChar(string myCharCaps, string myCharLower)

我如何在XAML中编写这个?

如何使用带参数的函数作为事件处理程序

单击处理程序需要遵守事件处理程序签名。如果您想让该处理程序成为WriteChar的简单包装器,那也可以。更多信息在这里:http://msdn.microsoft.com/en-us/library/bb531289(v=vs.90).aspx

您可以使用命令和命令参数来代替事件处理程序:

ViewModel:

public ICommand MyCommand { get; private set; }
// ViewModel constructor
public ViewModel()
{
    // Instead of object, you can choose the parameter type you want to pass.
    MyCommand = new DelegateCommand<object>(MyCommandHandler);
}
public void MyCommandHandler(object parameter)
{
    // Do stuff with parameter
}

XAML:

<Button Command="{Binding MyCommand}" CommandParameter="..." />

您可以在这里阅读更多关于WPF中的命令。

当然,如果您希望按钮总是使用相同的参数执行代码,那么从按钮传递参数就没有任何意义,这些参数可以硬编码到处理程序中:
<Button Click="Button_Click" />
private void Button_Click(object sender, EventArgs e)
{
    WriteChar("a", "A");
}