control-A、コピー、貼り付けなどのコマンド用のRoutedCommandがいくつかあり、それらはすべて正常に機能します。次に、矢印キーを使用してオブジェクトをキャンバス内で上下に移動する4つのroutedコマンドを追加しました。これらのコマンドは機能する場合と機能しない場合があります。最初はCanvasのフォーカスの問題だと思っていましたが、同時に、control-Aのような他のすべてのルーティングされたコマンドは機能しますが、矢印キーは機能しないことがわかりました。ここで何が起こっているのか本当にわかりません。これらは異なる変数名を持つ同一のroutedコマンドですが、どうして1つは100%の時間で機能し、もう1つは50%の時間しか機能しないのでしょうか。
RoutedCommandの動作:
_bindings.Add(new CommandBinding(DesignerCanvas.SelectAll, SelectAll_Executed));
SelectAll.InputGestures.Add(new KeyGesture(Key.A, ModifierKeys.Control));
private void SelectAll_Executed(object sender, ExecutedRoutedEventArgs e)
{
SelectionService.SelectAll();
}
RoutedCommandの誤動作:
_bindings.Add(new CommandBinding(DesignerCanvas.MoveDown, MoveDown_Executed));
MoveDown.InputGestures.Add(new KeyGesture(Key.Down));
private void MoveDown_Executed(object sender, ExecutedRoutedEventArgs e)
{
e.Handled = true;
var selectedItems = from item in SelectionService.CurrentSelection.OfType<DesignerItem>()
select item;
if (selectedItems.Count() > 0)
{
for (int i = 0; i < selectedItems.Count(); i++)
selectedItems.ElementAt(i).Top += Option.OptionSingleton.Sensitivity;
}
}
誤動作しているRoutedCommandが時々起動しない場合があります。特に、他のウィンドウを開いてキャンバスに戻った後は、他のroutedcommandが影響を受けない間、起動が停止します。この奇妙な振る舞いを引き起こしているアイデアはありますか?