将属性复制到剪贴板
问题描述:
我在我的ViewModel/Datacontext中有一个字符串属性,并希望有一个简单的按钮将其内容复制到剪贴板。这是可能从XAML做到的,或者我需要处理按钮单击事件(或使用ICommand)来完成此操作?我想下面的工作,但我的按钮总是灰色的:将属性复制到剪贴板
<Button Width="100" Content="Copy" Command="ApplicationCommands.Copy"
CommandTarget="{Binding MyStringProperty}"/>
答
的ApplicationCommands期待是在工具栏或菜单,这将给他们FocusScope基于RoutedUICommands。如果您的按钮工具栏或菜单之外,那么你需要显式声明的重点范围:
<Button
Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"
Command="ApplicationCommands.Copy"
FocusManager.IsFocusScope="True"/>
的CommandTarget用于声明哪个元素将提供FocusScope这意味着复制按钮才会启用时在CommandTarget声明的元素具有焦点,并在复印件的情况下,具有高亮显示文本:
<Button
Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"
Command="ApplicationCommands.Copy"
CommandTarget="{Binding ElementName=MyElement}" />
在回答您的具体问题,你需要拦截ApplicationCommands.Copy命令获取/设置你的ViewModel的MyStringProperty;说实话,我不知道该从哪里开始弄清楚这一点。也许在这里更聪明的人可以提供这个难题。
感谢您的解释。根据你所说的话,通过代码处理它可能更容易,并且该按钮绑定到一个ICommand。 – 2010-04-02 13:28:17
不要这样想。 Xaml更清洁。 – 2013-05-24 03:58:13