問題タブ [commandbinding]

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.

0 投票する
2 に答える
13760 参照

wpf - WPF CommandParameter バインディングの問題

コマンド パラメーター バインディングの仕組みを理解するのに苦労しています。

InitializeComponent を呼び出す前にウィジェット クラスのインスタンスを作成すると、正常に動作するようです。ExecuteCommand 関数のパラメーター (Widget) への変更は、_widget に「適用」されます。これは私が期待した動作です。

InitializeComponent の後に _widget のインスタンスを作成すると、ExecuteCommand 関数で e.Parameter の null 参照例外が発生します。

どうしてこれなの?ビューが作成された後にバインドされたオブジェクトが作成される可能性があるMVPパターンでこれを機能させるにはどうすればよいですか?

0 投票する
1 に答える
4093 参照

c# - CanExecute-Result が変更された後、コントロールが更新されない

私のウィンドウには、ロードおよび保存メソッドのボタンがあります。私は CommandBinding を使用しており、保存ボタンには CanExecute プロパティがあり、ユーザーがデータをロードする前に保存しないようにしています。

CanExecute-Methode は、「canSaveXML」と呼ばれる単純な bool 値に接続されています。

私の意図は、データがロードされた後に canSaveXML = true を設定することですが、値が変更された後にコントロールが更新されません。いくつか読んだところ、CommandManager.InvalidateRequerySuggested を呼び出す必要があることがわかりました。私は今それを行い、私のコードは次のようになります。

しかし、コントロール (ボタン) はまだ更新されません。UIで何かをトリガーするか、ウィンドウをミニミックス/最大化するまで、私はまだ無効になっています。それを行った後、ボタンが有効になります。

ここで何が問題なのですか?

MSDN のサンプルでは CommandManager.InvalidateRequerySuggested がディスパッチャータイマーで何度も呼び出されますが、それが唯一の解決策になるとは信じていません。

0 投票する
1 に答える
2813 参照

wpf - メニュー項目からコマンド バインドにコマンドをバインドできません

私は次のxamlを持っています:

[閉じる] メニュー項目は、[閉じる] コマンドを使用する必要があることを指定します。Close コマンド バインディングは、CanExecute に対して CommandBinding_CanExecute を呼び出す必要があることを指定しますが、CommandBinding_CanExecute は呼び出されません。閉じるメニュー項目は常に無効になっています。

バインディングは行われていないと思います。誰でも理由を説明できますか?

コンテキスト メニューがビジュアル ツリーにないことに関係している場合、どのように回避しますか?

0 投票する
4 に答える
43565 参照

c# - 親の DataContext を使用する (WPF - Dynamic Menu Command Binding)

私はこのウェブとグーグルを見ましたが、解決策はうまくいきませんでした。

UserControl の ViewModel にコマンドがあります。さて、ユーザー コントロールには、ObservableCollection にバインドされた ItemsControl があります。ItemsControl.ItemTemplate の DataTemplate 内にボタンがあり、コマンドを使用したいと考えています。DataTemplate 内では、datacontext は ViewModel ではなく ObservableCollection のアイテムであるため、コマンドをバインドできません。

問題は次のとおりです。親データコンテキストが失われた場合、ボタンをコマンドにバインドするにはどうすればよいですか?

これはよくある問題だと思うので、簡単な解決策が必要だと思います。

このシナリオを想像してみてください:

ItemsSource として observableCollection を持つ ListBox 項目があるため、コレクション内のすべての要素に対して ListBox 内でデータ テンプレートを使用しています。さて、選択したアイテムを削除したいので、そのジョブのすべての行にボタンを配置します。¿あなたはそれをどのようにしますか?

MVP では、ボタンのクリック イベントでこれを行うことができます。

要するに。行 (選択した項目) のデータ コンテキストをプレゼンターに送信します。

しかし、どうすればmvvmの方法でそれを行うことができますか? コマンドを使用する必要がありますが、ボタンは ViewModel (コマンドが存在する場所) について何も知らないため、コマンドをボタンに割り当てることができません。

ご覧のとおり、ボタンは datatemplate 内に存在する必要があり、datacontext はもはや ViewModel ではありません.... コマンドにアクセスするために、親の DataContext にアクセスする必要があるのはそのためです。

あなたが私の問題をよりよく理解してくれることを願っています。

ありがとうございました。

0 投票する
7 に答える
129235 参照

wpf - 閉じるコマンドをボタンにバインドする方法

最も簡単な方法は、イベント ハンドラーを実装してメソッドButtonClickを呼び出すことですが、バインディングWindow.Close()を介してこれを行うにはどうすればよいでしょうか。Command

0 投票する
1 に答える
1325 参照

wpf - PageFunction フォームで XAML を介してコマンド バインディングを設定する

WPF ウィンドウまたは WPF ページを作成している場合は、コマンドを XAML 内の関数にバインドできます。

別のタイプの WPF フォームがあります: a PageFunction. ただし、次のように入力することはできません。

2 つの考えられる説明を推測できます。

  • PageFunctionはジェネリック オブジェクトであるため、何らかの方法でジェネリック パラメーターを XAML に入力する必要があります。
  • それはフレームワークの矛盾です。

XAML 内でを構成CommandBindingsする方法を知っている人はいますか? PageFunction(コードでできることは知っていますが、それは重要ではありません)。

0 投票する
2 に答える
12734 参照

wpf - 複数のコマンドバインディング

複数のコマンドをボタンにバインドすることは可能ですか?

メインアプリケーション(親アプリケーション)で呼び出しているユーザーコントロールがあります。

両方のコントロール(ユーザーコントロールとメインウィンドウ)でクリックコマンドを処理したいと思います。しかし、私は1つしか取得できません。

私がこれを手に入れることができる方法はありますか?

どんな助けでも本当にありがたいです。

コードスニペット:

よろしく、Tushar

0 投票する
2 に答える
13702 参照

.net - WPF のアプリケーション レベルのショートカット キー

WPF アプリケーションでは、現在、ショートカット キーを使用してアプリケーション内の任意の場所で電卓ツール フォームを起動するコマンドをバインドしようとしています。コマンドを作成しましたが、コマンドとショートカット キーをマップしてアプリケーションでユニバーサル ショートカット キーを作成する方法がわかりません。前もって感謝します。

0 投票する
6 に答える
88662 参照

.net - WPF - CommandBindings を介してコマンドに強制的に「CanExecute」を再評価させる方法

階層内のMenuそれぞれに、定義した に設定されたプロパティがあります。associatedは、各 の有効な状態を制御する評価用のコールバックを提供します。MenuItemCommandRoutedCommandCommandBindingCanExecuteMenuItem

これはほとんど機能します。メニュー項目は、最初は正しい有効状態と無効状態で表示されます。ただし、CanExecuteコールバックが使用するデータが変更された場合、この新しい状態が UI に反映されるようにするには、コールバックから結果を再リクエストするコマンドが必要です。

RoutedCommandこれに関する、またはこれに対するパブリックメソッドはないようCommandBindingです。

コントロールをクリックまたは入力すると、コールバックが再び使用されることに注意してください(マウスオーバーでは更新されないため、入力時にトリガーされると思います)。

0 投票する
1 に答える
634 参照

wpf - WPF コマンド/コマンド バインディングに基づくコントロールの無効化

コマンドを実行できない場合、WPF はコマンドのソース (通常はボタン) を自動的に無効にするため、コマンドを使用すると便利です。

明らかに、この機能は、コマンド ソースではないコントロールでは使用できませんListBox

コマンド以外のソース管理でこの機能を有効にする最良の方法は何ですか? 私はいくつかの解決策を考えました:

  • ListBoxを aで囲み、ボタンの をクロムがないようにButton変更します。ControlTemplate
  • 非表示の を作成し、のプロパティをのプロパティにButtonバインドします。IsEnabledListBoxIsEnabledButton
  • ListBoxそのimplementsの子孫を作成しますICommandSource

もっとエレガントな方法はありますか?