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

本文关键字:命令 复制 WPF 按钮 使用 | 更新日期: 2023-09-27 18:09:38

我已经创建了一个带有按钮的工具栏。

其中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>

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

你不能这样使用命令!Command(按照您使用它的方式)应该位于MenuToolbar中。
顺便说一句,你不需要那些点击事件处理程序,因为你要使用命令!
我建议您尝试将DelegateCommand添加到ViewModel中,并让该委托调用ApplicationCommads

我强烈建议你阅读这篇文章http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
但是,作为您尝试以下快速解决方案(重要:记住,您需要在TextBox中选择一些文本,然后CopyCut将被启用):

<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>

对于您试图实现的目的,我建议使用切换按钮。

按钮也将是可点击的,当他们应该。例如

  • 粘贴按钮只有当有东西要粘贴时才可点击。
  • 剪切/复制按钮在RTB中被选中时可以点击。

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

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