MVVM中多个控件的通用上下文菜单
本文关键字:上下文 菜单 控件 MVVM | 更新日期: 2023-09-27 17:59:23
我有一个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)
{
//??
}
您可以在ApplicationCommands.Copy中使用构建。无需实现任何东西,复制功能已经实现。
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy" Command="Copy" />
</ContextMenu>
</TextBox.ContextMenu>
在复制文本之前,您仍然需要选择文本,但这是在复制文本时所期望的。