如何将带有参数的函数用作事件处理程序?

问题描述 投票:5回答:2

我正在使用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">

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

private void writeChar(string myCharCaps, string myCharLower)

我将如何用XAML编写?

c# xaml blend
2个回答
4
投票

您的点击处理程序需要遵守事件处理程序签名。如果要使该处理程序成为WriteChar周围的简单包装,那很好。此处更多信息:http://msdn.microsoft.com/en-us/library/bb531289(v=vs.90).aspx


2
投票

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

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 here中命令的更多信息。

当然,如果您希望按钮始终使用相同的参数执行代码,则从按钮传递参数没有任何意义,这些参数可以硬编码到处理程序中:

<Button Click="Button_Click" />

private void Button_Click(object sender, EventArgs e)
{
    WriteChar("a", "A");
}
© www.soinside.com 2019 - 2024. All rights reserved.