問題タブ [routedcommand]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mvvm - MVVM ルーティングおよびリレー コマンド
RoutedCommandとRelayCommandの違いは何ですか? RoutedCommand をいつ使用し、MVVM パターンで RelayCommand を使用するのはいつですか?
c# - XAML でのコマンド ターゲットの設定
RoutedCommand の CommandTarget プロパティを理解するのに苦労しています。
基本的に、(ウィンドウではなく) ユーザー コントロールに実装された静的コマンドがいくつかあります。ユーザー コントロールにコマンド バインドを作成します。ユーザー コントロールでボタンを宣言すると、ルーティング イベントを使用できます。ただし、ボタンがユーザー コントロールの外側にある場合、ルーティング イベントを使用できません。コマンドターゲットが私の問題を解決すると思います。
では、コンテナの Executed と CanExecuted が呼び出されるように、ツールバーのユーザー コントロールのボタンに commandtarget を設定するにはどうすればよいでしょうか。
micahtan の変更による変更を加えてコードを編集しましたが、まだ CanExecute または Execute にできません。
ウィンドウ XAML:
ツールバー XAML:
ツールバー CS:
コンテナー XAML:
コンテナ CS:
RoutedCommands:
wpf - RoutedCommand コンストラクターは互いにどのように異なりますか?
WPF の RoutedCommand には、3 つのオーバーロードされたコンストラクターがあります。
次の点を考慮してください。
対
2つ目の利点は何ですか?
XAML での定義が容易になりますか? MSDN は、2 番目のコンストラクターについてあまり詳しく説明していません。
wpf - VBにICommandSourceを実装できません
誰かがVBでICommandSourceを実装しようとしたことがありますか?Microsoftが提供する例はC#であり、VBでは暗黙的な実装が許可されていないため、このインターフェイスはVBでは実現できないようなものです。
c# - ショートカットとカスタムRoutedCommandを備えたWPFメニュー
私はWPFを初めて使用するので、何かが足りない可能性があります。MainWindowクラスにStartServiceという単純な関数があります。ショートカットCtrl+Sを使用してメニュー項目「サービスの開始」をアプリケーションに追加したいと思いました。私は次のことをしなければなりませんでした:
私のMainWindowクラスでは、以下を定義する必要がありました。
public static RoutedCommand StartServiceRoutedCmd = new RoutedCommand();
私のXAMLコードに次を追加しました:
物事は機能しています。これが正しい、組織化された方法であるかどうか疑問に思いますか?StopService関数のショートカットが必要になります。これは、必要なすべてのショートカットに対して、新しいRoutedCommand StopServiceRoutedCmdなどを定義する必要があることを意味しますか?
wpf - ContextMenus への CommandBinding の追加
さまざまなタイプのノードを含むツリービューがあります。
ツリー内の各ノードには、基になる ViewModel 内の ICommand オブジェクトの配列にバインドすることによって動的に作成されるコンテキスト メニューがあります。これは正常に機能し、コンテキスト メニューは期待どおりに機能します。
ただし、私のコマンドにはコマンド バインディングがないため、ツリービュー項目を選択してもメイン メニュー (切り取り/コピー/貼り付け) は変わりません。
私の質問は、コマンド バインディングを各ツリービュー アイテムに追加するにはどうすればよいですか?
それらにバインドできると思いますが、それを機能させることができませんでした。私の他の唯一の考えは、ツリービュー項目が選択/選択解除されたときにバインディングを作成/削除することです。
また、コマンドバインディングをツリービューアイテムに直接バインドできた場合、ツリーが大きい場合、これは非常にリソースを集中的に使用する可能性があることも懸念していましたか? 必要に応じてバインディングを作成および破棄する方がはるかに優れていますか?
wpf - WPFルーティングコマンドは時々のみ起動します
control-A、コピー、貼り付けなどのコマンド用のRoutedCommandがいくつかあり、それらはすべて正常に機能します。次に、矢印キーを使用してオブジェクトをキャンバス内で上下に移動する4つのroutedコマンドを追加しました。これらのコマンドは機能する場合と機能しない場合があります。最初はCanvasのフォーカスの問題だと思っていましたが、同時に、control-Aのような他のすべてのルーティングされたコマンドは機能しますが、矢印キーは機能しないことがわかりました。ここで何が起こっているのか本当にわかりません。これらは異なる変数名を持つ同一のroutedコマンドですが、どうして1つは100%の時間で機能し、もう1つは50%の時間しか機能しないのでしょうか。
RoutedCommandの動作:
RoutedCommandの誤動作:
誤動作しているRoutedCommandが時々起動しない場合があります。特に、他のウィンドウを開いてキャンバスに戻った後は、他のroutedcommandが影響を受けない間、起動が停止します。この奇妙な振る舞いを引き起こしているアイデアはありますか?
c# - WPF - GlobalResource を ViewModel に結合する
アプリの起動時に Application.Current.Resources に追加される ResourceDictionary で定義されたNotifyIconを持つ WPF アプリケーションがあります。
私は MVVM-Light フレームワークを使用しており、NotifyIcon の ContextMenu.MenuItems の Command プロパティを、ViewModel で定義された public RelayCommand にバインドしたいと考えています。
View を ViewModel に結合することには慣れていますが、グローバル リソースを ViewModel に結合するにはどうすればよいですか?
これを機能させるための私の試みは次のとおりです。正しい行にいるかどうかはわかりません...
このコードを実行すると、「'Locator' という名前のリソースが見つかりません。リソース名は大文字と小文字が区別されます。」というエラーが表示されます。これは、NotificationIconResources.xaml の TaskBarIcon タグの DataContext バインディングに由来します。
SingleInstanceManager により、インスタンスを 1 つだけ作成できるようになります
ControllerApp は App.xaml と App.xaml.cs を置き換えます
NotificationIconResources.xaml は、NotifyIcon を定義するリソース ディクショナリです。
NotifyIconViewModel には、バインドしたい RelayCommands が含まれています
binding - WPF では、RoutedUICommand のテキスト プロパティへの変更を、メモリ リークを引き起こすことなくリッスンするにはどうすればよいでしょうか?
WPF では、RoutedUICommand
は依存オブジェクトではなく、そのプロパティを MenuItem のヘッダーなどの UI 内の何かにINotifyPropertyChanged
バインドする場合に意味を実装しません。動的に読み込まれたコンテキストでメモリ リークが発生する可能性があります。これらの UI がロードおよびアンロードされるときにアイテムが非常に頻繁に作成および破棄されるメニューまたは UI。Text
Mode
OneTime
逆に、 を使用するOneTime
と、リークを回避できますが、アプリケーションのステータスに従ってメニューのテキストを動的に更新する必要があるため、必要な変更通知が失われます。"Save 'xxx' As..."
(現在のアイテムの名前を反映するために、典型的なコマンドがどのように変化するかを考えてみてください。)
とはいえ、メモリ リークを発生させずにテキストに適切にバインドし、変更を取得するにはどうすればよいでしょうか。
私たちが提案する解決策は、独自のプロパティを作成し、それをサポートするために実装するRoutedCommand
(注: 'UI' なし) のサブクラスを作成することです。ただし、 ではないため、 のヘッダーをプロパティに自動的にバインドするなど、WPF の組み込みサポートに問題があるかどうかはわかりません。(注: 実際のオブジェクトを使用してから、プロパティを「新規作成」することもできますが、プロパティへのアクセス方法で問題が発生する可能性があるため、可能であれば回避したいと考えています。)Text
INotifyPropertyChanged
MenuItem
Text
RoutedUICommand
RoutedUICommand
Text
wpf - CommandBinding.previewcanexecute イベントのトンネリングの使用は何ですか??
CommandBinding.previewcanexecute イベントのトンネリングの使用は何ですか?
CommandBinding.canexecute イベントのバブリング ?? どのように役立ちますか