2015-09-06 15 views
1

我希望能夠獲得以下按鈕的「內容」值,而無需爲每個按鈕編寫函數。我有以下功能,我想用於所有的按鈕。在C#和XAML中提取密鑰的內容值

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"/> 
+0

,你可以使用獲得的內容( (sender as button).Content).ToString(),你也可以在按鈕(Grid,StackPanel ...)的父佈局面板中添加Button.KeyUp =「Window_KeyUp」。 –

回答

3

既然你知道你的事件處理函數是從在每種情況下Button叫,你應該能夠在sender參數轉換爲Button的再訪問Content屬性。

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

正如馬丁給你以正確的方式,我重寫代碼:

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 
    } 

的最後2行可以改寫這樣的:

return btn.Content;