c# - 无论如何通过 XAML 事件监听器传递 WPF 控件以在后面的代码中使用?

标签 c# wpf winforms xaml wpf-controls

假设我有两个简单的 WPF 控件:

<Button x:Name="btnOne" Content="Test"  Click="btnOne_Click" />
<Button x:Name="btnTwo" Content="TestTwo" />

我是否可以将 btnTwo 控件传递给 WPF 中 btnOne 中的 Click 事件,以便我可以在 中使用它>btnOne_Click 函数?

我知道我显然可以直接在代码中引用按钮,但我想传递它以最小化我的功能,而不是让 4 个不同的功能做同样的事情。

最佳答案

这已经在框架本身上完成了。

查看点击处理程序的定义:

Button_Click(object sender, RoutedEventArgs e);

如您所见,您有一个 sender 参数,它是触发事件的对象。

所以,如果你设置:

<Button x:Name="btnOne" Content="Test"  Click="btn_Click" />
<Button x:Name="btnTwo" Content="TestTwo"  Click="btn_Click" />

然后你可以使用 sender 参数来检查哪个按钮被点击了:

protected void btn_Click(object sender, RoutedEventArgs e)
{
    Button btn = sender as Button;
    if(btn == null)
        return;

   switch(btn.Name)
   {
       case "btnOne":
          //...
          break;
       case "btnTwo":
          //...
          break;
   }
}

关于c# - 无论如何通过 XAML 事件监听器传递 WPF 控件以在后面的代码中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35655735/

相关文章:

c# - WPF 使用语句打开另一个窗体

c# - 未处理的异常后终止应用程序

html - 如何在html中制作一个像可调整大小的div一样的TableLayoutPanel

c# - 图片框问题

c# - JSON 不反序列化

wpf - 哪个更适合与 Prism4、Unity 或 MEF 一起用作依赖注入(inject)容器?

c# - 将包含 int 的对象转换为 float 导致 InvalidCastException

c# - 输入事件未在用户控件内的面板中触发

c# - 对象引用未保存的 transient 实例 在刷新之前保存 transient 实例

c# - 使用 BinaryFormatter 时可以将属性标记为 "not to be serialized"吗?