これは問題なく動作します。私MainWindow.xamlファイルでは、私は私のMainWindow.xaml.csファイルでイラスト
<Window x:Class="MainWindowCommandBinding.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">
<Window.InputBindings>
<KeyBinding Command="{Binding OpenCommand}" Gesture="Ctrl+O"/>
<!--<KeyBinding Command="{Binding SaveCommand}" Gesture="Ctrl+S"/>-->
<KeyBinding Command="{Binding CopyCommand}" Gesture="Ctrl+C"/>
<!--<KeyBinding Command="{Binding PasteCommand}" Gesture="Ctrl+V"/>
<KeyBinding Command="{Binding CutCommand}" Gesture="Ctrl+X"/>-->
</Window.InputBindings>
<Grid>
</Grid>
</Window>
ための2つのキーバインドコマンドを追加し、私は次のように私のDataContextを初期化します。
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowContext();
}
MainWindowContextクラスは、私が実行すると
class MainWindowContext
{
RelayCommand _openCommand;
public ICommand OpenCommand
{
get
{
if (_openCommand == null)
{
_openCommand = new RelayCommand(
param => this.Open(),
param => this.Open_CanExecute());
}
return _openCommand;
}
set { _openCommand = (RelayCommand) value; }
}
RelayCommand _copyCommand;
public ICommand CopyCommand
{
get
{
if (_copyCommand == null)
{
_copyCommand = new RelayCommand(
param => this.Copy(),
param => this.Copy_CanExecute());
}
return _copyCommand;
}
set { _copyCommand = (RelayCommand)value; }
}
private bool Copy_CanExecute()
{
return true;
}
private object Copy()
{
Console.Out.WriteLine("Copy command executed");
return null;
}
private bool Open_CanExecute()
{
return true;
}
private object Open()
{
Console.Out.WriteLine("Open command executed");
return null;
}
}
に従うと定義され、それが正常に動作します。あなたはどのコマンドがあなたのコンソールで実行されたかを見ることができます。 私は何かが恋しいのか教えてください。
CopyCommandなどを別のジェスチャにバインドすると機能しますか? – Arcass
Ctrl + Cに別のコマンドをバインドすると、CopyCommandを別のジェスチャーにバインドすると機能しません。それで、それはコマンドのものです。私はコマンドのコードを追加します。私が持っているコピーボタンがうまく働くので、奇妙に思える。 – KrisTrip