使用WPF按钮复制和粘贴命令

3
我创建了一个带有按钮的工具栏。
其中3个按钮是剪切、复制和粘贴。我在属性中设置了每个按钮的命令为剪切、复制和粘贴,但当我运行程序时,这些按钮都无法点击。我猜想它们被禁用了?我试图从文本框复制和粘贴到选项卡控件中的另一个文本框。感谢您提供任何帮助。
<Style TargetType="{x:Type Button}" x:Key="textBoxCommands">
  <Setter Property="Content" 
          Value="{Binding RelativeSource={RelativeSource Self}, 
                          Path=Command.Text}" />
  <Setter Property="CommandTarget" 
          Value="{Binding ElementName=textBox}" />
</Style>

<Button x:Name="btnCut" 
        Click="btnCut_Click">
  <Image Source="Icons/Cut.png" ToolTip="Cut" />
</Button>
<Button x:Name="btnCopy" 
        Click="btnCopy_Click" 
        Command="ApplicationCommands.Copy"
        Style="{StaticResource textBoxCommands}">
  <Image Source="Icons/Copy.png" ToolTip="Copy" />
</Button>
<Button x:Name="btnPaste" 
        Click="btnPaste_Click" 
        Command="ApplicationCommands.Paste"
        Style="{StaticResource textBoxCommands}" > 
  <Image Source="Icons/Paste.png" ToolTip="Paste" />
</Button>
2个回答

7
你不能这样使用命令!(以你使用的方式)应该在菜单工具栏中使用命令。
顺便说一下,由于你将要使用命令,因此不需要那些点击事件处理程序!
我建议你尝试向ViewModel添加DelegateCommand,并让该委托调用ApplicationCommads
我强烈建议你阅读这篇文章:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx。但是作为您的快速解决方案,请尝试以下操作(重要提示:请记住,在TextBox中选择一些文本,然后复制剪切将被启用):
<StackPanel  HorizontalAlignment="Left" VerticalAlignment="Top">

  <ToolBar>
    <Button Content="Cut" Command="ApplicationCommands.Cut" Height="23" Width="75"/>
    <Button Content="Copy" Command="ApplicationCommands.Copy" Height="23" Width="75"/>
    <Button Content="Paste" Command="ApplicationCommands.Paste" Height="23" Width="75"/>
  </ToolBar>

  <TextBox Height="23" Name="textBox1" Width="120"/>

</StackPanel>

1
谢谢回复。我明白这些命令可以用来做什么。我觉得很蠢问这个问题,但我对这一切都很新。viewMode是什么? - TMan
1
这不是一个愚蠢的问题!抱歉我打错了,应该是“ViewModel”(我写成了ViewMode)。我在我的答案中添加了一些代码。 - Fred Jand

0

针对您想要实现的目的,我建议使用togglebutton。

此外,按钮将在应该时可点击。例如:

  • 只有在有东西可以粘贴时,粘贴按钮才可点击。
  • 只有在RTB中选择了某些内容时,剪切/复制按钮才可点击。

请查看msdn上的所有ApplicationCommands。您可以像这样轻松实现它们:

<ToggleButton x:Name="PasteBtn" Command="ApplicationCommands.Paste"/>
<ToggleButton x:Name="CutBtn"   Command="ApplicationCommands.Cut"/>
<ToggleButton x:Name="CopyBtn"  Command="ApplicationCommands.Copy"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接