2011-09-27 314 views
3

我创建了一个带有按钮的工具栏。使用WPF按钮复制和粘贴命令

其中3个按钮被剪切和粘贴。我设置了每个按钮的命令以剪切复制和粘贴属性,但是当我运行程序时,没有任何按钮甚至可以点击。他们是否残疾我猜?我试图从文本框复制并粘贴到tabcontrol中的文本框。任何帮助表示赞赏。

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

回答

5

你不能使用命令这种方式!命令(以你使用它的方式)应该在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> 
+1

感谢您的回复。我明白这些命令可以用于什么。我觉得这个问题很愚蠢,但我对这一切都很陌生。什么是viewMode? – TMan

+1

这不是一个愚蠢的问题!对不起,我有一个错字是“ViewModel”(我写过ViewMode)。我在我的答案中添加了一些代码 –

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