問題タブ [relaycommand]
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 - RelayCommandパラメータとバインディング
意見:
WPF(MVVM)を使用して基本的な計算機で遊ぶ。最初の数値に1つのTextBox、2番目の数値に1つのTextBox、結果に1つのTextBlock、AddCommandを実行して結果を返すための1つのボタンがあります。これらのコントロールを適切なデータにバインドするための適切なXAML構文は何ですか。
モデル:
ViewModel:
Vladの要求に応じて新しいバージョンのコードを編集する
モデル:
ViewModel:
XAMLを表示:
背後にあるコードを表示:
バインディングのすべてのモードを試しましたが、結果はありませんでした。ここに追加の質問があります、そのような状況でのデフォルトのバインディングモードは何ですか?
計算のデータ型に関係しているとさえ思ったので、doubleからintに切り替えましたが、それでも機能しませんでした。
c# - ユニットテストでRelayCommandRaiseCanExecuteChangedが機能しないのはなぜですか?
Nuget(4.1.23.0)で利用可能な現在のバージョンのMvvmLightを使用していますが、RaiseCanExecuteChangedを呼び出しても単体テストでは何も実行されていないようです。シナリオは非常に単純です。次のコマンドがあります。
ビューモデルコンストラクターでそれを新しくし、いくつかのプライベートメソッドをポイントします。
次に、セッターでSomeRequiredProperty
RaiseCanExecuteChangedを呼び出します。
ユニットテストでは、次のことを行います。
イベントハンドラーが起動していないため、テストは失敗します。何故ですか?
更新:この動作は実行時に実際に機能します。
c# - MVVM を使用した状況依存コマンド
基本的にボタンが付いたテキスト ボックスであるカスタム コンポーネントがあります。ボタンは、テキスト ボックスに対してアクションを実行することになっています。たとえば、ボタンをクリックすると、テキスト ボックスにランダムな文字列が入力される可能性があります。
テキスト フィールドは、ViewModel のプロパティにバインドされます。基本的には次のようになります。
コンポーネントに一般的なコマンドを設定する最良の方法は何ですか?
RelayCommand
これまでに行ったことは、ViewModel にパラメーターを期待する1 つのジェネラルがあることです。各ボタンには、その単一のコマンドに設定されたコマンドがあり、CommandParameter
プロパティを使用して、実際に話しているテキスト フィールド コンポーネントに関する情報を追加します。次に、ViewModel はその情報を使用して正しいプロパティを見つけ、その値を変更します (バインディングを介してテキスト ボックスを更新します)。
これは問題なく機能しますが、関連するテキスト ボックスまたはコンテキストに関する情報を手動で挿入する必要があるのは嫌いです。理想的には、どのテキスト ボックスまたはバインドされたプロパティについて話しているかを既に知っているコンテキスト スコープ内でコマンドを実行したいと考えています。これを行う方法はありますか?
私が遭遇したもう 1 つの問題は、ボタン アクションをキー コマンドにバインドしたいということです。そのため、テキスト ボックスにフォーカスしてキー ショートカットを押すと、正しいボタンをクリックしたかのように動作するようにします。つまり、コマンドを実行して正しいコンテキスト情報を渡します。私の代替案は、これをコード ビハインドに入れ、基本的に現在のフォーカスからコマンド パラメーターを抽出することですが、よりクリーンなソリューションを希望します。
これをMVVMで機能させる良い方法はありますか?
mvvm-light - 機能しない理由: RelayCommand RaiseCanExecuteChanged
PressCommand.RaiseCanExecuteChanged();
メソッドでを呼び出してTimerOnElapsed
も、何も起こりませんでした。
何が問題なのですか?(GalaSoft.MvvmLight.WPF4 v4.0.30319 および GalaSoft.MvvmLight.Extras.WPF4 v4.0.30319)
ここに私のテストコードがあります:
前もって感謝します
windows-phone-7 - ビューモデルでMVVM RelayCommandを宣言する方法
セットでリレーコマンドを使用する方法、私は次の方法を使用し、セットメソッドでインターフェイスのバグをスローします
wpf - 3つのステップ操作をWPFのコマンドに変更するには?
私はMVVMの設計パターンを学んでいるので、いくつかの操作をコマンドに変更しようとしています。
例を次に示します。MainWindow にはキャンバスがコンテナーとしてあり、ユーザーはドラッグして四角形を描くことができます。だから私は以下のようにコードを書く
元に戻す機能を追加して、元に戻すが呼び出された後に四角形が消えるようにしたいので、これらの3つのステップを1つのコマンドにしたいと思います。どうすればいいですか?ありがとう。
wpf - コマンドをMenuItem(WPF)にどのようにバインドしますか?
これがView.xaml.csからの私のコードです:
そして、これが私のView.xamlからのコードです:
プログラムを実行して閉じるメニュー項目を選択しても、何も起こりません。CloseCommandコードは実行されません。
wpf - InputBinding-Command の送信者を取得する方法
私はこのxamlコードを持っています:
それが私のViewModelのコードです:
今私の質問です、どうすればこのコマンドの送信者を取得できますか?
wpf - リレーコマンド CanExecute が正しくない値を返す
canExecute パラメーターを使用して、非常に標準的な MVVM Light RelayCommand を作成します。
() => (customer.Regions.Count > 0)
必要に応じて呼び出すRaiseCanExecuteChanged();
と、canExecute が正しく再評価されません。次に、次のように手動でも呼び出します: var canExecute = myCommand.CanExecute(null);
、それでも間違っています。I do の直後の次のステートメントvar foo = (customer.Regions.Count > 0)
では、正しい結果が返されます。ここで何が起こっているのですか?
コマンド定義:
customer は、クラスがインスタンス化されるときに設定されるプライベート プロパティです。
wpf - Field Initializer でアクセスして wpf Controls にアクセスする方法
ここに私が持っている、
vs2010は、「p」が非静的フィールドを指すことができないというコンパイル時エラーをスローし、グリッドとテキストボックスにアクセスできません..これらのコントロールはwpfです.従業員のオブジェクトも作成できません..
そしてRcommandクラスは..
その Add() メソッドにアクセスしたいのですが、その結果、テキスト ボックスとデータグリッドにアクセスしたいのですが、どのようにすればよいですか?
または、RCommand クラスをどのように持つべきですか?