2016-08-01 35 views
0

我有一個WPF窗口,裏面有4個只讀TextBoxes,我需要啓用帶有複製選項的上下文菜單。目前我正在處理代碼。但我聽說這不是一個好方法。MVVM中多個控件的通用上下文菜單

<TextBox Name="StepsTextBox" 
     Text="{Binding Steps, Mode=OneWay}" 
     IsReadOnly="True" 
     Click="Copy_click"/> 

代碼隱藏:

private void Copy_click(object sender, RoutedEventArgs e) 
{ 
    StepsTextBox.Copy(); 
} 

我嘗試使用MVVM如下:

<TextBox.ContextMenu> 
    <ContextMenu> 
     <MenuItem Header="Copy" Command="{Binding OnCopyButtonClick}" CommandParameter="{Binding ElementName=StepsTextBox}"/> 
    </ContextMenu> 
</TextBox.ContextMenu> 

但我怎麼從代碼中訪問該文本框,如果我把它作爲參數。而且我怎樣才能保持所有文本框的通用代碼?任何人都可以幫忙嗎?提前致謝。

private void OnCopyButtonClick(TextBox textBox) 
{ 
    //?? 
} 

回答

1

您可以使用內置ApplicationCommands.Copy。無需執行任何操作,複製功能已經實現。

<TextBox.ContextMenu> 
    <ContextMenu> 
     <MenuItem Header="Copy" Command="Copy" /> 
    </ContextMenu> 
</TextBox.ContextMenu> 

複製文本之前,您仍然必須選擇文本,但這是複製文本時的預期。

+0

它像一個魅力工作。非常感謝 ! – SKN

相關問題