MVVMパターンを使用してwpfアプリケーションを開発しています。鍵の押下&のリリースイベントを個別に処理する必要があります(たとえば、メディアプレーヤーのfwd/revは、離したときにユーザーがキーを押したままになるまで、&が停止するまで発生します)。 多くの検索を行った後も、それを行う方法は見つけられませんでした。誰でも助けてください。MVVMの主要なプレス&リリースイベントの処理
0
A
答えて
0
ご意見ありがとうございます。 対話性トリガー&依存プロパティを使用してこれを行う方法が見つかりました。 次は、Commandの依存関係プロパティです。
public class EventToCommand : TriggerAction<DependencyObject>
{
public ICommand Command
{
get { return (ICommand)GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
// Using a DependencyProperty as the backing store for Command. This enables animation, styling, binding, etc...
public static readonly DependencyProperty CommandProperty =
DependencyProperty.Register("Command", typeof(ICommand), typeof(EventToCommand), new PropertyMetadata(null));
protected override void Invoke(object parameter)
{
if (Command != null
&& Command.CanExecute(parameter))
{
Command.Execute(parameter);
}
}
}
それからちょうど次のようにXAMLでそれを使用する:KeyReleaseCommand & KeyDownCommandがあなたのViewModelにRelayCommandある
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<ap:EventToCommand Command="{Binding KeyReleaseCommand}"></ap:EventToCommand>
</i:EventTrigger>
<i:EventTrigger EventName="KeyDown">
<ap:EventToCommand Command="{Binding KeyDownCommand}"></ap:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
。
public MainViewModel()
{
KeyDownCommand = new RelayCommand<KeyEventArgs>(OnKeyDown, null);
KeyReleaseCommand = new RelayCommand<KeyEventArgs>(OnKeyRelease, null);
}
private void OnKeyRelease(KeyEventArgs args)
{
if (args.KeyboardDevice.Modifiers == ModifierKeys.Alt)
{
if (args.SystemKey == Key.Left)
{
Trace.WriteLine("ALT+LEFT Released");
}
}
}
public void OnKeyDown(KeyEventArgs args)
{
if (args.IsRepeat)
return;
if (args.KeyboardDevice.Modifiers == ModifierKeys.Alt)
{
if(args.SystemKey == Key.Left)
{
Trace.WriteLine("ALT+LEFT");
}
}
}
0
私は、Command
をButton
にバインドすると思います。コマンドを繰り返し実行する場合は、RepeatButtonを使用できます。その目的のために設計されました。コマンドをCommand
プロパティにバインドできます。 RepeatButton
がリリースされるまで、あなたのメソッドを繰り返し実行します。
関連する問題
- 1. RxSwiftとMVVMの処理エラー
- 2. MVVM例外処理
- 3. エラー処理WPF - MVVM
- 4. NSButtonをSwiftでクリックしてリリースイベントを処理する
- 5. Silerlight MVVM例外処理
- 6. マルチウィンドウでのWPF + MVVMの処理
- 7. MVVMアプリケーションの並行処理アーキテクチャ
- 8. MouseDragElementBehaviorのDragイベントを処理するMVVM
- 9. 処理中にkeyプレスされた場合
- 10. Android:どのようにキーのプレスを処理できますか?
- 11. MVVM ViewModel上で処理されていないすべてのキーストロークを処理する
- 12. MVVMのVMの役割 - すべてを処理する必要があるのはなぜですか?
- 13. MVVMデータバインディング値の特殊文字の処理方法
- 14. WPF-MVVMでのエラー処理/無効化ボタン
- 15. WPFとMVVMを使用したTreeViewsコンテキストメニューの処理
- 16. AndroidでのRxJavaとMVVMパターンによるエラー処理
- 17. MVVM wpf TreeViewの処理方法拡張イベント
- 18. MVVMでコンボボックスSelectionChangedをどのように処理しますか?
- 19. MVVMクロスナゲットパッケージの理解
- 20. さまざまな種類のユーザーテーブルの主キーを処理する方法は?
- 21. Jdom要素の処理
- 22. djangoインクルージョンテンプレートタグの処理要求
- 23. 他の要素で処理されていないJavascriptイベントの処理
- 24. php - mysql:フォーム処理:主キーの自動生成
- 25. 永続的なナビゲーションビュー(MVVM、WPF)の管理
- 26. 一般的なビュー要求処理Django
- 27. iOS:音声処理に必要なスレッディングソリューション
- 28. エラー処理で必要な入力
- 29. POST要求がボタンのプレスで送信されない
- 30. キャンセル/オーバーラップコール処理を伴うWPF MVVM非同期ワーカーメソッド
あなたのビューモデルに格納されているコマンドの呼び出しにそれらのUIイベントを翻訳することができますhttp://stackoverflow.com/questions/4897775/wpf-binding-ui-events-to-commands-in-viewmodel –
ここから始めてください。問題がある場合は、https://msdn.microsoft.com/en-us/library/system.windows.input.inputmanager(v=vs.110).aspxに戻ってください。 – Will