問題タブ [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.
wpf - WPF CommandParameter バインディングの問題
コマンド パラメーター バインディングの仕組みを理解するのに苦労しています。
InitializeComponent を呼び出す前にウィジェット クラスのインスタンスを作成すると、正常に動作するようです。ExecuteCommand 関数のパラメーター (Widget) への変更は、_widget に「適用」されます。これは私が期待した動作です。
InitializeComponent の後に _widget のインスタンスを作成すると、ExecuteCommand 関数で e.Parameter の null 参照例外が発生します。
どうしてこれなの?ビューが作成された後にバインドされたオブジェクトが作成される可能性があるMVPパターンでこれを機能させるにはどうすればよいですか?
c# - CanExecute-Result が変更された後、コントロールが更新されない
私のウィンドウには、ロードおよび保存メソッドのボタンがあります。私は CommandBinding を使用しており、保存ボタンには CanExecute プロパティがあり、ユーザーがデータをロードする前に保存しないようにしています。
CanExecute-Methode は、「canSaveXML」と呼ばれる単純な bool 値に接続されています。
私の意図は、データがロードされた後に canSaveXML = true を設定することですが、値が変更された後にコントロールが更新されません。いくつか読んだところ、CommandManager.InvalidateRequerySuggested を呼び出す必要があることがわかりました。私は今それを行い、私のコードは次のようになります。
しかし、コントロール (ボタン) はまだ更新されません。UIで何かをトリガーするか、ウィンドウをミニミックス/最大化するまで、私はまだ無効になっています。それを行った後、ボタンが有効になります。
ここで何が問題なのですか?
MSDN のサンプルでは CommandManager.InvalidateRequerySuggested がディスパッチャータイマーで何度も呼び出されますが、それが唯一の解決策になるとは信じていません。
wpf - メニュー項目からコマンド バインドにコマンドをバインドできません
私は次のxamlを持っています:
[閉じる] メニュー項目は、[閉じる] コマンドを使用する必要があることを指定します。Close コマンド バインディングは、CanExecute に対して CommandBinding_CanExecute を呼び出す必要があることを指定しますが、CommandBinding_CanExecute は呼び出されません。閉じるメニュー項目は常に無効になっています。
バインディングは行われていないと思います。誰でも理由を説明できますか?
コンテキスト メニューがビジュアル ツリーにないことに関係している場合、どのように回避しますか?
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 にアクセスする必要があるのはそのためです。
あなたが私の問題をよりよく理解してくれることを願っています。
ありがとうございました。
wpf - 閉じるコマンドをボタンにバインドする方法
最も簡単な方法は、イベント ハンドラーを実装してメソッドButtonClick
を呼び出すことですが、バインディングWindow.Close()
を介してこれを行うにはどうすればよいでしょうか。Command
wpf - PageFunction フォームで XAML を介してコマンド バインディングを設定する
WPF ウィンドウまたは WPF ページを作成している場合は、コマンドを XAML 内の関数にバインドできます。
別のタイプの WPF フォームがあります: a PageFunction
. ただし、次のように入力することはできません。
2 つの考えられる説明を推測できます。
PageFunction
はジェネリック オブジェクトであるため、何らかの方法でジェネリック パラメーターを XAML に入力する必要があります。- それはフレームワークの矛盾です。
XAML 内でを構成CommandBindings
する方法を知っている人はいますか? PageFunction
(コードでできることは知っていますが、それは重要ではありません)。
wpf - 複数のコマンドバインディング
複数のコマンドをボタンにバインドすることは可能ですか?
メインアプリケーション(親アプリケーション)で呼び出しているユーザーコントロールがあります。
両方のコントロール(ユーザーコントロールとメインウィンドウ)でクリックコマンドを処理したいと思います。しかし、私は1つしか取得できません。
私がこれを手に入れることができる方法はありますか?
どんな助けでも本当にありがたいです。
コードスニペット:
よろしく、Tushar
.net - WPF のアプリケーション レベルのショートカット キー
WPF アプリケーションでは、現在、ショートカット キーを使用してアプリケーション内の任意の場所で電卓ツール フォームを起動するコマンドをバインドしようとしています。コマンドを作成しましたが、コマンドとショートカット キーをマップしてアプリケーションでユニバーサル ショートカット キーを作成する方法がわかりません。前もって感謝します。
.net - WPF - CommandBindings を介してコマンドに強制的に「CanExecute」を再評価させる方法
階層内のMenu
それぞれに、定義した に設定されたプロパティがあります。associatedは、各 の有効な状態を制御する評価用のコールバックを提供します。MenuItem
Command
RoutedCommand
CommandBinding
CanExecute
MenuItem
これはほとんど機能します。メニュー項目は、最初は正しい有効状態と無効状態で表示されます。ただし、CanExecute
コールバックが使用するデータが変更された場合、この新しい状態が UI に反映されるようにするには、コールバックから結果を再リクエストするコマンドが必要です。
RoutedCommand
これに関する、またはこれに対するパブリックメソッドはないようCommandBinding
です。
コントロールをクリックまたは入力すると、コールバックが再び使用されることに注意してください(マウスオーバーでは更新されないため、入力時にトリガーされると思います)。
wpf - WPF コマンド/コマンド バインディングに基づくコントロールの無効化
コマンドを実行できない場合、WPF はコマンドのソース (通常はボタン) を自動的に無効にするため、コマンドを使用すると便利です。
明らかに、この機能は、コマンド ソースではないコントロールでは使用できませんListBox
。
コマンド以外のソース管理でこの機能を有効にする最良の方法は何ですか? 私はいくつかの解決策を考えました:
ListBox
を aで囲み、ボタンの をクロムがないようにButton
変更します。ControlTemplate
- 非表示の を作成し、のプロパティをのプロパティに
Button
バインドします。IsEnabled
ListBox
IsEnabled
Button
ListBox
そのimplementsの子孫を作成しますICommandSource
。
もっとエレガントな方法はありますか?