問題タブ [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.
mvvm - RaiseCanExecuteChanged を呼び出す場所
MVVM Light Toolkit を使用していますが、RelayCommand
.
ビューモデルにいくつかのString
プロパティがあり、それらRaiseCanExecuteChanged
がセッターで呼び出される場合、すべてが正常に機能し、必要なときにコマンドを実行できます。
しかし、コードを変更して Model クラス X を作成すると、これらのプロパティがすべて含まれ、ViewModel には X 型のプロパティが含まれますRaiseCanExecuteChanged
。Model クラスでは意味がなく、ViewModel の X のセッターは呼び出されません。
wpf - RelayCommand commandParameter がヌルです
ユーザーコントロールにボタンがあります
SaveCommand は、ViewModel で宣言された RelayCommand です。CompanyDetails は、同じ ViewModel 内のプロパティです。上記のViewModelは、私のUserControlのデータコンテキストです。
ユーザー コントロールの他のフィールドは、GetCompanyDetails 関数を呼び出す ObjectDataProvider にバインドされます。CompanyDetails は、SaveIt サブルーチンを呼び出すまで、この関数が呼び出されるたびに正しく設定されます。SaveIt が呼び出されると、そのパラメーターは常に Nothing です。どこで間違いを犯しますか?回答ありがとうございました。
c# - ユーザーコントロールボタンのバインディングがメインビューモデルのリレーコマンドに応答しない
MainViewModel にバインドされた MainWindow があります。MainWindow内に、このようにユーザーコントロールを定義しています
そのユーザーコントロール内に、ボタン付きのデータグリッドがあります。目標は、ボタンがクリックされて MainWindow xaml のデータグリッドが変更されたときです。これは私のユーザーコントロールのデータグリッドがどのように見えるかです
アプリケーションを実行すると、次のエラーが表示されます。
MainViewModel にあるコマンド リレーを使用しています。私の問題は、そのmainViewModelを参照する方法がわからないことです。次のような提案された解決策をいくつか試しました
どんな提案も役に立ちます。ありがとうございました。
.net - IMultiValueConverter を使用して複数の CommandParameter を viewModel に渡す
次のコードがあります。
以下は PassThroughConverter のコードです。
戻り値の行にヒットするとすぐにデバッグすると、正しい値が配列にありますが、filtergrid コマンドをトリガーするボタンを押すと、返される値は両方とも null ですか? 誰でも助けることができます。ありがとうございました。
silverlight - BindableApplicationBarIconButtonIsEnabledプロパティをRelaycommandCanExecuteWindowsPhone7.1にバインドする
私はPhone7.FxR1を使用しています
以下の作品。ユーザーがボタンを押しても、システムは反応しません。これは、ゲームが開始されていない状態でStop Gameが押されても反応がないことを意味し、その逆も同様です。
ただし、ボタンはアクティブに見えます。IsEnabledを別のプロパティにバインドできることは承知していますが、NewGameCanExecuteとStopGameCanExecuteにバインドしたいと思います。これは可能ですか?
いくつかのXAMLコード:
そしてリレーコマンド:
いくつかの質問と回答:
Q: CanExecute関数にブレークポイントを設定して、呼び出されるかどうかを確認しようとしましたか?
A:はい。呼び出されますが、falseが返されても、アイコンはグレー表示されません。CanExecuteメソッドがfalseを返した場合、Executeメソッドは実行されません。ただし、通常のボタンのようにアイコンをグレー表示にします。
解決
私はしばらく時間をかけて解決策を考え出しました。それはここで見つけることができます:http: //pastebin.com/MM75xACj
windows-phone-7 - ItemsControlTapイベントでのCommandParameterのバインド
ItemsControlを使用していますが、Tapコマンドで選択されたアイテムを特定したいと思います。私のxamlはここで定義されています:
これが私のビューモデルです:
コマンドするイベントは機能しますが、ItemSelectedメソッドに到達すると、myItemがNullになるか、それをキャストする例外が発生します(xamlでのCommandParameterの定義方法によって異なります)。
ListBoxを使用して設定すると、これを実行できますCommandParameter="{Binding SelectedItem, ElementName=MyItemsList"}
ItemsControlでこれを行う方法についてのアイデアはありますか?それとも、パフォーマンスの違いは、マンゴーの2つの違いをあまり大きくしませんか?
wpf - パラメータをExecuteおよびCanExecuteリレーコマンドに渡しますWPFMVVMLight
MVVMLightからRelayコマンドを使用しようとしていますが、ExecuteメソッドとCanExecuteメソッドの両方にパラメーターを渡すための正しい構文を見つけるのに苦労しています。
以下は私の失敗した試みです
どんな助けや指示も大歓迎です
c# - リレーコマンドの実行を制御するには?
次のようなボタンがあります。
保存コマンドが完了するまで実行されたときに、ユーザーがボタンをクリックできないか、ボタンをクリックしてもコマンドが実行されないことが必要です! この問題に対する私の解決策は
この問題のより良い解決策はありますか?
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コンストラクターパラメーターを介してパラメーターを渡す方法がわかりません。
どんなアドバイスも大歓迎です、
ありがとう
私の前の質問に関連して
c# - MVVMで「ウィンドウを閉じる」コマンドを実装する
そのため、最初の試みはコードビハインドからすべてを実行し、現在はボックス情報のMVVMのガイダンスに従って、MVVMパターンを使用するようにコードをリファクタリングしようとしています。
ビュークラスに一致するビューモデルクラスを作成し、コマンドから始めて、コードをコードビハインドからビューモデルに移動しています。
私の最初の問題は、データが変更されていない場合にウィンドウを閉じる「閉じる」ボタンを実装しようとしています。CloseCommandを装備して、「onClick」メソッドを置き換えました。コードを実行しようとする場所を除いて、すべて問題ありませんthis.Close()
。明らかに、コードがウィンドウから通常のクラスに移動されたため、「this」はウィンドウではなく、したがって閉じることができません。ただし、MVVMによると、ビューモデルはビューを認識していないため、を呼び出すことはできませんview.Close()
。
誰かがviewmodelコマンドからウィンドウを閉じる方法を提案できますか?