問題タブ [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.

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

mvvm - RaiseCanExecuteChanged を呼び出す場所

MVVM Light Toolkit を使用していますが、RelayCommand.

ビューモデルにいくつかのStringプロパティがあり、それらRaiseCanExecuteChangedがセッターで呼び出される場合、すべてが正常に機能し、必要なときにコマンドを実行できます。

しかし、コードを変更して Model クラス X を作成すると、これらのプロパティがすべて含まれ、ViewModel には X 型のプロパティが含まれますRaiseCanExecuteChanged。Model クラスでは意味がなく、ViewModel の X のセッターは呼び出されません。

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

wpf - RelayCommand commandParameter がヌルです

ユーザーコントロールにボタンがあります

SaveCommand は、ViewModel で宣言された RelayCommand です。CompanyDetails は、同じ ViewModel 内のプロパティです。上記のViewModelは、私のUserControlのデータコンテキストです。

ユーザー コントロールの他のフィールドは、GetCompanyDetails 関数を呼び出す ObjectDataProvider にバインドされます。CompanyDetails は、SaveIt サブルーチンを呼び出すまで、この関数が呼び出されるたびに正しく設定されます。SaveIt が呼び出されると、そのパラメーターは常に Nothing です。どこで間違いを犯しますか?回答ありがとうございました。

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

c# - ユーザーコントロールボタンのバインディングがメインビューモデルのリレーコマンドに応答しない

MainViewModel にバインドされた MainWindow があります。MainWindow内に、このようにユーザーコントロールを定義しています

そのユーザーコントロール内に、ボタン付きのデータグリッドがあります。目標は、ボタンがクリックされて MainWindow xaml のデータグリッドが変更されたときです。これは私のユーザーコントロールのデータグリッドがどのように見えるかです

アプリケーションを実行すると、次のエラーが表示されます。

MainViewModel にあるコマンド リレーを使用しています。私の問題は、そのmainViewModelを参照する方法がわからないことです。次のような提案された解決策をいくつか試しました

どんな提案も役に立ちます。ありがとうございました。

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

.net - IMul​​tiValueConverter を使用して複数の CommandParameter を viewModel に渡す

次のコードがあります。

以下は PassThroughConverter のコードです。

戻り値の行にヒットするとすぐにデバッグすると、正しい値が配列にありますが、filtergrid コマンドをトリガーするボタンを押すと、返される値は両方とも null ですか? 誰でも助けることができます。ありがとうございました。

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

silverlight - BindableApplicationBarIconButtonIsEnabledプロパティをRelaycommandCanExecuteWindowsPhone7.1にバインドする

私はPhone7.FxR1を使用しています

以下の作品。ユーザーがボタンを押しても、システムは反応しません。これは、ゲームが開始されていない状態でStop Gameが押されても反応がないことを意味し、その逆も同様です。

ただし、ボタンはアクティブに見えます。IsEnabledを別のプロパティにバインドできることは承知していますが、NewGameCanExecuteとStopGameCanExecuteにバインドしたいと思います。これは可能ですか?

いくつかのXAMLコード:

そしてリレーコマンド:

いくつかの質問と回答:

Q: CanExecute関数にブレークポイントを設定して、呼び出されるかどうかを確認しようとしましたか?

A:はい。呼び出されますが、falseが返されても、アイコンはグレー表示されません。CanExecuteメソッドがfalseを返した場合、Executeメソッドは実行されません。ただし、通常のボタンのようにアイコンをグレー表示にします。

解決

私はしばらく時間をかけて解決策を考え出しました。それはここで見つけることができます:http: //pastebin.com/MM75xACj

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

windows-phone-7 - ItemsControlTapイベントでのCommandParameterのバインド

ItemsControlを使用していますが、Tapコマンドで選択されたアイテムを特定したいと思います。私のxamlはここで定義されています:

これが私のビューモデルです:

コマンドするイベントは機能しますが、ItemSelectedメソッドに到達すると、myItemがNullになるか、それをキャストする例外が発生します(xamlでのCommandParameterの定義方法によって異なります)。

ListBoxを使用して設定すると、これを実行できますCommandParameter="{Binding SelectedItem, ElementName=MyItemsList"}

ItemsControlでこれを行う方法についてのアイデアはありますか?それとも、パフォーマンスの違いは、マンゴーの2つの違いをあまり大きくしませんか?

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

wpf - パラメータをExecuteおよびCanExecuteリレーコマンドに渡しますWPFMVVMLight

MVVMLightからRelayコマンドを使用しようとしていますが、ExecuteメソッドとCanExecuteメソッドの両方にパラメーターを渡すための正しい構文を見つけるのに苦労しています。

以下は私の失敗した試みです

どんな助けや指示も大歓迎です

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

c# - リレーコマンドの実行を制御するには?

次のようなボタンがあります。

保存コマンドが完了するまで実行されたときに、ユーザーがボタンをクリックできないか、ボタンをクリックしてもコマンドが実行されないことが必要です! この問題に対する私の解決策は

この問題のより良い解決策はありますか?

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

c# - パラメータを使用してラムダ式からデリゲートを作成するにはどうすればよいですか?

パラメータを使用してRelayCommandのインスタンスを動的に作成しようとしています。

複数のメソッドを持つViewModelがありますが、今は次のようにリストします。

次のように、それらをRelayCommandのインスタンスに動的にフックしたいと思います。

前の行は機能しますが、メソッド名は実行時に渡されるため、同じことを動的に実現する必要があります。

編集:いくつかの説明:私のシナリオでは、名前でメソッドを直接参照することはできません。RelayCommandの作成に使用するメソッド名は文字列として渡されます。

解決:

これが@ZafarYousafiの提案を使用した私の最終的な解決策です。メソッドパラメータ(オブジェクトmyparameter)のタ​​イプであるため、RelayCommandおよびActionandPredicateにジェネリック'object'タイプを使用する方法に注意してください。

これは次と同等である必要があります:

重要な注意: @DanCが指摘したように、Josh Smithによって作成されたRelayCommandクラスは、作成時にパラメーターを受け取ることを目的としていません。適切に設計されたMVVMソリューションでは、RelayCommandパラメーターはCommandParameterプロパティのXAMLバインディングを介して渡されます。したがって、button.CommandがRelayCommandにバインドされている場合は、button.CommandParameterもバインドする必要があります。ここで説明するように:MVVMRelayCommandとパラメーター

古い失敗した試み: これは私がこれまでに持っているものです:

これは正常に実行され、コンパイルエラーや実行時エラーは発生しませんが、RelayComandコンストラクターパラメーターを介してパラメーターを渡す方法がわかりません。

どんなアドバイスも大歓迎です、

ありがとう

私の前の質問に関連して

0 投票する
12 に答える
58790 参照

c# - MVVMで「ウィンドウを閉じる」コマンドを実装する

そのため、最初の試みはコードビハインドからすべてを実行し、現在はボックス情報のMVVMのガイダンスに従って、MVVMパターンを使用するようにコードをリファクタリングしようとしています。

ビュークラスに一致するビューモデルクラスを作成し、コマンドから始めて、コードをコードビハインドからビューモデルに移動しています。

私の最初の問題は、データが変更されていない場合にウィンドウを閉じる「閉じる」ボタンを実装しようとしています。CloseCommandを装備して、「onClick」メソッドを置き換えました。コードを実行しようとする場所を除いて、すべて問題ありませんthis.Close()。明らかに、コードがウィンドウから通常のクラスに移動されたため、「this」はウィンドウではなく、したがって閉じることができません。ただし、MVVMによると、ビューモデルはビューを認識していないため、を呼び出すことはできませんview.Close()

誰かがviewmodelコマンドからウィンドウを閉じる方法を提案できますか?