問題タブ [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 投票する
0 に答える
354 参照

wpf - RelayCommand を IsChecked プロパティに結び付ける方法は?

これまでのところ、ボタン (太字フォントのツールバー ボタンなど) をチェックまたはチェック解除するためにコード ビハインド イベントに依存する必要がありました。実行および実行可能。

RelayCommand を使用すると、CanExecute デリゲートを提供することで、ボタンを簡単に有効または無効にすることができます。別のデリゲートをボタン (またはメニュー) の IsChecked プロパティに結び付ける方法はありますか?

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

wpf - アクティブなビューのViewmodelのコマンドへのグローバルKeyBinding

私はこれを持っていますMainWindow.xaml

独自のビューモデルを持つ子ビューがいくつかあります。たとえば、aFileViewとaFileViewModelとaDataViewとがありDataViewModelます。OpenCommand両方のビューモデルで、 :の実装があります。

Ctrl+Oを押すOpenCommandと、アクティブなビューのビューモデルに対してコマンドが実行されます。したがって、のキーを押すと、FileViewOpenFile()実行されます。にキーを入力するとDataViewOpenData()が実行されます。ある種のMDI振る舞い。

上記のコードは機能しません。

このタイプのキーバインド/コマンド処理をどのように実装しますか?

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

wpf - コマンドはViewModelへのacssessバインドではありません-wpf

Wpf DataGridがあります。キーボードの削除キーをクリックして、ViewModelの関数を呼び出します。これにより、DataGridはViewModelのリストにバインドされます。コードは次のようになります。

データグリッド:

このクラスが保持するDataGridのDataContextはViewModelです

私のViewModel:

クラスXXには、名前(文字列)と値(int)があります

コマンドへのバインドが機能せず、InitializeComponent()でエラーメッセージが表示されます。

次の方法でコマンドへのリンクを記述した場合、エラーは発生しませんが、削除を押しても関数に到達しません。

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

wpf - パラメーターを使用した RelayCommand CanExecute への MenuItem Visibility バインディング

ViewModel 内でコマンドを作成するために、WPF MVVM アプリで Josh Smith RelayCommand クラスを使用しています。

例えば:

ContextMenu からこのコマンドを呼び出しています。

CanExecute私のMenuItemがまだ表示されているが無効になっていることを除いて、すべて正常に動作します。リレーコマンドがfalseを返したときにMenuItemが表示されないように、VisibilityをCollapsedに設定したいと思います。

CanRemoveAll(object obj)Visibility プロパティへのバインドを設定しようとしましたが、パラメーターを使用してメソッドにバインドする方法がわかりません。DataTrigger の使用も考えましたが、その方法がわかりません。

CanRemoveAllViewModel での私のメソッドは次のとおりです。

RelayCommand クラスから:

どんな助けでも大歓迎です、

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

c# - RelayCommand が起動せず、ObservableCollection が選択した値をキャッチしないのはなぜですか?

RelayCommands (Josh Smith の MVVMDemoApp に従って) を使用するのは初めてで、間違いを特定するのに役立つ可能性があります。

私は2つのリストボックスを持っています。最初のリストのアイテムが選択され、[追加] ボタンが押されると、AddCommand が実行され、2 番目のリストの ObservableCollection が selectedItem を追加されます。

私の見解:

私のビューモデル:

前もって感謝します!

また:なぜでしょう:

[追加] ボタンを永久に無効のままにしますか? アイテムが選択されたことをボタンに知らせるために何をしていませんか? これは、コマンドが起動しない理由についての私の理解への同じミッシングリンクのようです。

再度、感謝します!

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

c# - コードビハインドでRelayCommandにパラメーターを渡します

SOFとGoogleのいたるところに同じようなタイトルの投稿が複数あることは知っていますが、しばらくお待ちください。

この記事に従って、グリッドビューのコンテキストメニューを作成しています:http ://www.koaxkoaxkoax.com/ribbit/2010/09/creating-dynamic-menus-in-wpf.html

でHierarchicalDataTemplateを作成しUserControl.Resourcesます。グリッドビューのリソースに空のメニューがあり、実際のコンテキストメニューで参照します。XAML(グリッドビューの最初の部分)は次のようになります。

背後にあるコードではFindResource、メニューへの参照を取得し、およびとViewMenuItem同じレベルにある1つのオブジェクトを作成するために使用します。次に、リストを反復処理し、リストアイテムごとに1つのオブジェクトを作成し、それらを子オブジェクトとしてアタッチします。それは私がそれを持ちたいのと同じように見えます。しかし、実際の機能を動作させることはできません。foobarViewMenuItem

foreachループの内部(子オブジェクトを作成する場所)は次のようになります。

特に含む行p=>_view.SetSeriesExecute(p)は私を混乱させます。私はそれとまったく同じように見える多くの例を見つけました。プログラムを実行して子要素の1つをクリックすると、SetSeriesExecuteメソッドは適切に呼び出されますが、パラメーターは常にnullです。それほど驚くことではありません。なぜなら、実際には、型のオブジェクトをSeriesパラメーターとして提供することはないからです。私は次のようにRelayCommandコンストラクターでパラメーターを提供しようとしました:p=>_view.SetSeriesExecute(mySeriesObject)。コンパイルされますが、SetSeriesExecute呼び出されることはありません。

私の目標は非常に単純です(少なくともそうだと思います):プログラムがコンテキストメニューの要素のクリックに反応するとき、メソッド(SetSeriesExecute)は、ユーザーが実際に選択(=クリック)した項目を知る必要があります。残念ながらSetSeriesExecute、4時間の真剣な調査にもかかわらず、パラメータをどこにどのように提供できるかを理解できませんでした。そして、他の誰もが利用可能な例を理解しているように見えるという事実は、私が自分自身について特に気分が良くなるわけではなく、すべてのヒントに生涯の感謝を捧げます。

最高のピーター

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

.net - デリゲートと RelayCommand

メソッドへの参照を作成し、「外部」コード (別の dll/プロジェクト) から参照できるという点で、デリゲートに頭を悩ませていると思いました。

現在、MVVM を使用していますが、デリゲートが渡されるのと同じ方法でパラメーターとしてメソッドを渡しているように見える RelayCommand と呼ばれるものが表示されます。これはどのように可能ですか?

私が見ているコードは

RelayCommand オブジェクトは

では、デリゲートがないので、Action<> オブジェクトで何らかのトリックが発生していると想定できますか?

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

silverlight - xaml で RelayCommand をバインドするための DataContext の設定

ResourceButtonClick次の xaml コードでは、ビュー モデルにあるRelayCommand をバインドしようとしています。それに加えて、Resource.Idこのコマンドにパラメーターとして を渡したいと思います。

ただし、ResourceButtonClick呼び出されません。ItemsSourceを に設定することResourcesで、ビュー モデルであるデータ コンテキストをオーバーライドしたと思われます。

これRelayCommandがビューモデルです。

ビュー モデルのコンストラクター:

ビューモデルのメソッド:

2 つの質問があります。まず、ResourceButtonClickコマンドを呼び出すにはどうすればよいですか。Resource.Id次に、そのコマンドにパラメーターとして渡すにはどうすればよいですか。

任意の提案をいただければ幸いです。

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

mvvm - ICommandは常にパラメーターとしてオブジェクトを必要としますか?

インターフェイスを実装するICommandと、次のメソッドが作成されます

興味深い部分は

1つのパラメーターが必要であることを示しているからです。パラメータを渡す必要がない場合はどうなりますか?私のViewModelには次のコードがあります

このOpenDialogメソッドはパラメーターを必要としませんが、インターフェイスを満たすために必要なように見えます。

私はこれを正しく行っていますか、それとも要点を見逃しましたか?

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

c# - サービスクラスからのビューモデルでのrelayコマンドの実行

「名前/背景」などの各ノードの設定を使用して、カスタムTreeViewクラスを作成します。また、必要に応じて各ノードでカスタムメソッドを実行できるように設定できるICommandプロパティもあります。

これらすべてを「ツリービューサービスクラス」で構築し、MVVMLightメッセンジャーを介してメニューをユーザーコントロールに送信します。これはすべて問題なく機能しますが、私の問題は、ノードにカスタムコマンドを指定しない場合、Messengerサービスからメッセージを受信するビューモデルにある「デフォルトアクション」を実行することです。

基本的に私の質問は次のとおりです。ツリーを構築するときに、別のビューモデル(またはサービスクラス)からRelayCommandを参照できるように、MainViewModelでRelayCommandを公開するにはどうすればよいですか。