在C#和XAML中提取键的内容值

在C#和XAML中提取键的内容值,c#,wpf,xaml,C#,Wpf,Xaml,我希望能够获得以下按钮的“内容”值,而不必为每个按钮编写函数。我想为所有按钮使用以下功能 private void Window_KeyUp(Object sender, KeyRoutedEventArgs e) { SetViewModel(e.OriginalKey.ToString()); } 这是按钮的XAML代码,我希望将内容值传递给SetViewModel()函数 <Button x:Name="btn4" Content="4" Marg

我希望能够获得以下按钮的“内容”值,而不必为每个按钮编写函数。我想为所有按钮使用以下功能

private void Window_KeyUp(Object sender, KeyRoutedEventArgs e)
    {
        SetViewModel(e.OriginalKey.ToString());
    }
这是按钮的XAML代码,我希望将内容值传递给SetViewModel()函数

<Button x:Name="btn4"  Content="4" Margin="0,5,0,0" Click="btn4_Click" KeyUp ="Window_KeyUp"/>
<Button x:Name="btn5"  Content="5" Margin="5,5,0,0" Click="btn5_Click" KeyUp ="Window_KeyUp"/>
<Button x:Name="btn6"  Content="6" Margin="5,5,0,0" Click="btn6_Click" KeyUp ="Window_KeyUp"/>

因为您知道在每种情况下,事件处理函数都是从
按钮调用的,所以您应该能够将
发送者
参数强制转换为
按钮
然后访问
内容
属性

var content = ((Button)e).Content;

正如Martin为您提供的正确方法,我重写了您的代码:

private string Window_KeyUp(Object sender, KeyRoutedEventArgs)
    {
        Button btn = sender as Button;//get the button who rised the KeyUp event
        string str = btn.Content;//get the property in a string
        return str;//I replace return type from void to string in your code, this is why I return a string
    }
最后两行可以这样重写:

return btn.Content;
您可以使用((发件人为按钮).content).ToString()获取内容,还可以在按钮(网格、堆栈面板…)的父布局面板中添加button.KeyUp=“Window\u KeyUp”。