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

C# 如何使用带有参数的函数作为事件处理程序?,c#,xaml,blend,C#,Xaml,Blend,我正在使用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="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">

我该如何在XAML中编写它?

您的单击处理程序需要遵守事件处理程序签名。如果您想使该处理程序成为WriteChar的简单包装器,这很好。此处的详细信息:

您可以使用命令和命令参数而不是事件处理程序:

视图模型:

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
}
<Button Command="{Binding MyCommand}" CommandParameter="..." />
public ICommand MyCommand{get;private set;}
//视图模型构造函数
公共视图模型()
{
//您可以选择要传递的参数类型,而不是对象。
MyCommand=新的DelegateCommand(MyCommandHandler);
}
public void MyCommandHandler(对象参数)
{
//用参数做一些事情
}
XAML:

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
}
<Button Command="{Binding MyCommand}" CommandParameter="..." />

您可以阅读有关WPF中命令的更多信息

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

<Button Click="Button_Click" />

private void Button_Click(object sender, EventArgs e)
{
    WriteChar("a", "A");
}

私有无效按钮\u单击(对象发送者,事件参数e)
{
书面形式(“a”、“a”);
}

好吧,我还是不太明白。我通读了说明书,但还是有点迷路。很抱歉我对XAML和C#非常陌生。不知道如何帮助你。如果您对编写函数本身感到困惑,可以在XAML中这样做,但在代码隐藏文件(如C#或VB.NET)中实现逻辑要容易得多。获得正确签名的最简单方法是在XAML编辑器中,键入“Click=”,它应该会像“new event handler”一样弹出自动完成,然后按enter键。它将给它一个名称,并在代码文件中创建具有正确签名的方法。。。这个过程似乎没有自动完成。我必须安装或启用某些功能吗?