我有一个WPF窗口,其中包含4个只读TextBoxes
,所有这些窗口都需要启用带有复制选项的上下文菜单。目前我正在处理代码问题。但我听说这不是一个好方法。
<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)
{
//??
}
答案 0 :(得分:1)
您可以使用内置ApplicationCommands.Copy。无需实现任何操作,复制功能已经实现。
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy" Command="Copy" />
</ContextMenu>
</TextBox.ContextMenu>
在复制文本之前,您仍然需要选择文本,但在复制文本时可能会出现这种情况。