C# 以编程方式将Click EventHandler添加到按钮

C# 以编程方式将Click EventHandler添加到按钮,c#,wpf,mouseclick-event,C#,Wpf,Mouseclick Event,我正在使用一个方法以编程方式创建按钮,并希望附加一个单击事件处理程序。但是,该数据当前来自一个不能与+=RoutedEventHandler一起使用的字符串参数 public按钮CreateButton(字符串显示、字符串名称、字符串ClickEventHandler) { 按钮Btn=新按钮 { 内容=显示, Name=“Btn_389;”+名称 }; Btn.Click+=新建路由事件处理器(ClickEventHandler); 返回Btn; } 无效Btn\u保存\u单击(对象发送方,路

我正在使用一个方法以编程方式创建按钮,并希望附加一个单击事件处理程序。但是,该数据当前来自一个不能与
+=RoutedEventHandler
一起使用的字符串参数

public按钮CreateButton(字符串显示、字符串名称、字符串ClickEventHandler)
{
按钮Btn=新按钮
{
内容=显示,
Name=“Btn_389;”+名称
};
Btn.Click+=新建路由事件处理器(ClickEventHandler);
返回Btn;
}
无效Btn\u保存\u单击(对象发送方,路由目标)
{
抛出新的NotImplementedException();
}
//后来
Button MyButton=CreateButton(“保存”、“保存”、“点击保存”);
错误是
RoutedEventHandler
需要的是
方法
,而不是
字符串
。是否有一种不同的方法来以编程方式绑定允许这种行为的事件?
谢谢

我不完全确定你想用这个来完成什么

下面是一个如何在运行时创建事件的示例

public void CreateButton()
{
  Button Btn = new Button();

  Btn.Click += new EventHandler(btn_Clicked);


}

private void btn_Clicked(object sender, EventArgs e)
{
 // Your Logic here
}

据我所知,您希望传递在触发
单击
事件时应执行的方法。您可以按照以下思路做一些事情:

Button button = CreateButton("Save", "save", (s, e) => SomeOnClickEvent(s, e));
Button button2 = CreateButton("Create", "create", (s, e) => SomeOtherOnClickEvent(s, e));

public Button CreateButton(string display, string name, Action<object, EventArgs> click)
{
    Button b = new Button()
    {
        Content = display,
        Name = $"Btn_{name}"
    };

    b.Click += new EventHandler(click);

    return b;
}

void SomeOnClickEvent(object sender, EventArgs e)
{

}

void SomeOtherOnClickEvent(object sender, EventArgs e)
{

}
Button-Button=CreateButton(“保存”、“保存”、(s,e)=>SomeOnClickEvent(s,e));
Button button2=CreateButton(“创建”、“创建”、(s,e)=>SomeOtherOnClickEvent(s,e));
公共按钮CreateButton(字符串显示、字符串名称、操作单击)
{
按钮b=新按钮()
{
内容=显示,
Name=$“Btn{Name}”
};
b、 单击+=新建事件处理程序(单击);
返回b;
}
void SomeOnClickEvent(对象发送方,EventArgs e)
{
}
void SomeOtherOnClickEvent(对象发送方,事件参数e)
{
}

a。传递不带引号的方法。B在WPF中,不要使用事件,使用命令绑定。这从根本上是错误的。应该再次阅读教程@DannyVarod有点过于严格,不能说WPF不使用事件。如果事件处于视图级别,那么它就非常好。@Steve我认为Danny的意思是不应该使用事件,而应该使用命令绑定。他从来没有说过,“WPF不使用事件”…@Steve,正如Codexer所说,我从来没有说过。仅仅因为你可以做一些事情,并不意味着你应该做。仅仅因为这会起作用,并不意味着这是一个好的做法。@DannyVarod我同意,但为什么你认为这会被视为坏的做法?请参阅对问题的最新评论,正确的做法是使用绑定和命令绑定,例如,将按钮列表绑定到VM对象列表。仅仅因为这会起作用,并不意味着这是一种好的做法。@DannyVarod所以你只是到处写注释?我可以看到关于我的答案的争论,但这只是声明事件的标准方式。答案是正确的,我只是不想看到人们这样做。我建议你拿出一个更好的选择。有些人实际上从这个网站上学习,所以最好提供良好的实践,而不是仅仅回答任何问题来获得分数。也许晚些时候。。。但请允许我@DannyVarod,因为我有航空科学学位。我已经尽了最大努力去了解我所处的这个世界,这个世界需要在这个网站上花费很多时间。如果这不符合进入这个行业的人的当前标准,那么你推荐什么?@ReeseJones我建议你阅读一些关于MVVM的内容,包括WPF中的数据绑定和命令绑定。这是一种更干净的方式,自从WPF链接和