0

アプリケーションにコピーペーストボタンがあります。最初は両方のボタンを無効にする必要があります。任意のテキスト ボックスから任意のテキストを選択した場合は、コピー ボタンのみを有効にする必要があります。何かをコピーしたら、[貼り付け] ボタンを有効にする必要があります。App.xaml.cs ファイルでこのコードを使用します。

私の質問は、いつこのボタンを有効にする必要があるか、テキストを選択したかどうかを CanCmdCopy 関数で調べる方法ですか?

    #region CopyCommand
    private void CmdCopy(object sender, ExecutedRoutedEventArgs args)
    {
        // code///
    }
    private void CanCmdCopy(object sender, CanExecuteRoutedEventArgs args)
    {
        args.CanExecute = ?????
    }
    #endregion

ありがとう

ディー

4

1 に答える 1

3

デフォルトのApplicationCommandsを使用する必要があります。探している動作が得られます。を使用するToolBarと、他に何もしなくても機能します。それ以外の場合は、FocusManager.IsFocusScopeCommandTargetプロパティを使用するか、直接バインドする必要があります。クリップボードに何かがある場合、貼り付けボタンが有効になることに注意してください。メソッドを使用してClipBoard.Clear、クリップボードをリセットできます。

すなわち:

例 1

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
  <StackPanel >
    <ToolBar>
        <Button  Command="ApplicationCommands.Copy">Copy</Button>
        <Button Command="ApplicationCommands.Paste">Paste</Button>
    </ToolBar>
    <TextBox BorderBrush="Black" BorderThickness="2" Margin="5" TextWrapping="Wrap" />
    <TextBox BorderBrush="Black" BorderThickness="2" Margin="5" TextWrapping="Wrap" />

  </StackPanel >

</Window>

例 2

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
  <StackPanel >
      <TextBox BorderBrush="Black" BorderThickness="2" Margin="5" TextWrapping="Wrap" />
      <TextBox BorderBrush="Black" BorderThickness="2" Margin="5" TextWrapping="Wrap" />
      <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FocusManager.IsFocusScope="True" >
          <Grid.ColumnDefinitions>
              <ColumnDefinition Width="*"/>
              <ColumnDefinition Width="*"/>
          </Grid.ColumnDefinitions>
          <Button Grid.Column="0" Height="50" Command="ApplicationCommands.Copy" >Copy</Button>
          <Button Grid.Column="1" Height="50" Command="ApplicationCommands.Paste">Paste</Button>
      </Grid >
  </StackPanel >
</Window>
于 2012-10-07T01:40:04.640 に答える