如何在剪贴板中复制按钮的文本?

时间:2013-09-04 08:13:47

标签: c# wpf wpf-controls clipboard

我的应用中有一个简单的按钮:

<Button Content="{Binding ViewModel.Name}" Command="{Binding ViewModel.Command}"  MinWidth="50">
</Button>

我希望当您按下按钮时,按钮内的内容(文本)将被复制到剪贴板中。

我们能做到吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

首先获取按钮内容,

string contntText =   btnName.Content.ToString();

然后将文本设置为剪贴板,

System.Windows.Forms.Clipboard.SetText(contntText);

答案 1 :(得分:1)

将按钮更改为:

<Button Content="{Binding ViewModel.Name}" Command="{Binding ViewModel.Command}"  MinWidth="50">
    <Button.InputBindings>
        <MouseBinding Gesture="RightClick" Command="ViewModel.CopyToClipboard" />
    </Button.InputBindings>
</Button>

ViewModel中定义以下方法:

public void copyToClipboard() 
{
    System.Windows.Clipboard.SetData(DataFormats.Text, (Object)this.Name);
}

然后将copyToClipboard方法分配给CopyToClipboard命令。

答案 2 :(得分:1)

您可以使用交互将按钮上的MouseRightButtonUp事件绑定到视图模型上的命令。您可以在

中找到相互作用
<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseRightButtonUp">
        <i:InvokeCommandAction Command="{Binding CopyButtonText}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

你必须导入交互式命名空间:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.I‌​nteractivity"

Window.Interactivity命名空间有EventTrigger和InvokeCommandAction。

并且在copybuttonTest命令处理程序中可以执行

System.Windows.Clipboard.SetData(DataFormats.Text, Name);