WPFで効果的に "エイリアス"コマンドを実行する方法はありますか?私の状況は次のとおりです。カスタマイズされたキャンバスを数多く持つグラフィカルエディタのコンテキストでApplicationCommands.Deleteを使用するアプリケーションを作成しました。これらのキャンバスにあるコントロールの中には、TextBoxesを使用するものがありますが、ここでは問題があります.TextBoxはApplicationCommands.Deleteに応答せず、EditorCommands.Deleteに応答します。 TextBoxをサブクラス化せずに、またはすべてのTextBoxインスタンスでバインディングを手動で設定せずに、ApplicationCommands.Deleteに応答するようにTextBoxをきれいに取得する方法はありますか?WPFでエイリアスコマンドを実行する方法はありますか?
3
A
答えて
2
あなたの特定の質問に答えるために、2つの別々のルーティングされたコマンドを同じコマンドとして扱う方法はありません。しかし、ApplicationCommands.Delete
はルーティングされたコマンドであるため、ターゲットに配信された後、TextBox
があり、コマンドバインディングは存在しないため、バブリングが開始されます。したがって、あなたの要件を満たす最も簡単な解決策は、ApplicationCommands.Delete
のコマンドバインディングをTextBox
のどこかにインストールして、あなたが望む動作を実装するWindow
を含む可能性があります。
<Grid>
<Grid.CommandBindings>
<CommandBinding Command="ApplicationCommands.Delete" CanExecute="CommandBinding_CanExecute" Executed="CommandBinding_Executed"/>
</Grid.CommandBindings>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_Edit">
<MenuItem Header="_Delete" Command="ApplicationCommands.Delete"/>
</MenuItem>
</Menu>
<StackPanel>
<TextBox Text="Some text"/>
</StackPanel>
</DockPanel>
</Grid>
、ここでは、コードビハインドです:
ここは、この場合にはTextBox
なりますフォーカスのある要素を命じる「右」を送信し、親Grid
のハンドラをインストール例です
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
EditingCommands.Delete.Execute(null, Keyboard.FocusedElement);
}
関連する問題
- 1. AppEngineでOpenBravoを実行する方法はありますか?
- 2. Tracをオフラインで実行する方法はありますか?
- 3. .NETでゼロコピーを実行する方法はありますか?
- 4. qpythonでsshを実行する方法はありますか?
- 5. WebClientでPUTを実行する方法はありますか?
- 6. cygwinでgpartedを実行する方法はありますか?
- 7. ASCXを実行するMVCの方法はありますか?
- 8. do-whileを実行する方法はありますか?
- 9. file_get_contents()を実行するJavaScriptの方法はありますか?
- 10. WPFでFirstWindowシャットダウンモードをオーバーライドする方法はありますか?
- 11. WPFでコントロールを「アンラップ」する方法はありますか?
- 12. 実行時にTableAttributeを設定する方法はありますか、実行時にLINQタイプの切り替えを行う方法はありますか?
- 13. Golangで繰り返しタスクを実行する方法はありますか?
- 14. 実行時のデータバインディングでWPFチャートの列幅を小さくする方法はありますか?
- 15. WPFルーティングイベントを監視する方法はありますか?
- 16. WPFのコントロールを「クリックスルー」する方法はありますか?
- 17. Eclipseでコマンドをバックグラウンドで実行する方法はありますか?
- 18. 実際のコマンドを実行する前に環境変数を変更するエイリアスコマンドの作成方法
- 19. RPMインストールを並行して実行する方法はありますか?
- 20. wpfオフスクリーンイベントを実行する方法
- 21. WPFの親行に簡単にバインドする方法はありますか?
- 22. 実行時にValidationRuleクラスのプロパティ値をWPFで渡す方法はありますか?
- 23. rack-livereloadをより速く実行する方法はありますか?
- 24. TextBlockのXAMLでドロップシャドウエフェクトを実行する方法はありますか?
- 25. MySQLの別のスレッドでトリガを実行する方法はありますか?
- 26. Linuxでスクリーンセーバーとしてアプリケーションを実行する方法はありますか?
- 27. Rubyでevalを実行する安全な方法はありますか?
- 28. AsyncTaskでHttpClientの実行を停止する方法はありますか?
- 29. pythonスクリプトでarp -a cmdコマンドを実行する方法はありますか?
- 30. httpタイムアウトでgitを実行する方法はありますか?