在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”。