【问题标题】:Read XAML tag as string in C#在 C# 中将 XAML 标记读取为字符串
【发布时间】:2016-04-11 03:52:20
【问题描述】:

我有很多按钮都具有相同的单击事件,但我想知道实际单击了哪个按钮,而无需为每个按钮编写单独的 C# 代码。如果我可以在 C# 中将 XAML 标记作为字符串读取,我可以让它工作,但我不知道该怎么做。有任何想法吗?谢谢!!

【问题讨论】:

  • 真的不确定您的确切含义,但您不能使用 XAML 标记的 Name 属性吗?提供一些代码以更好地理解您的问题。
  • 您已经获得了在事件中被点击的按钮。您必须更清楚地解释这还不够,以及您将从 XAML 中得到什么,而您现在没有。
  • Name 也可以,但我也无法正常工作。您知道我如何读取 XAML 控件的 name 属性并将其存储为 C# 中的字符串吗?我试过这样的事情:string buttonName = this.Name;但这不会返回名称。
  • 在您的Button_Click 方法中,sender 参数是您单击的按钮,但您需要将其转换为Button 才能访问它的属性。例如var button = (Button)sender;,则可以访问其属性,如button.Namebutton.Content等。
  • 谢谢,语气!!这正是我想要的!!!

标签: c# windows xaml uwp-xaml


【解决方案1】:
private void Home_Click(object sender, RoutedEventArgs e)
    {
        var button = sender as RadioButton;
        if (button != null)
        {
            switch (button.Tag.ToString())
            {
                case "Home":
                    this.MyFrame.Navigate(typeof(Views.Home_Page));
                    break;
                case "Settings":
                    this.MyFrame.Navigate(typeof(Views.Settings_Page));
                    break;
            }
            Header.Text = button.Tag.ToString();
        }
    }

To more options

【讨论】:

    【解决方案2】:

    为什么不直接将发送者转换为 Button,然后将 button.Tag 转换为字符串?

    Button _sender = sender as Button;
    string tag = _sender.Tag as string;
    

    当然你可以在标签值上做一个开关来知道哪个按钮是发件人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 2010-09-20
      • 2011-05-31
      相关资源
      最近更新 更多