問題タブ [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 を IsChecked プロパティに結び付ける方法は?
これまでのところ、ボタン (太字フォントのツールバー ボタンなど) をチェックまたはチェック解除するためにコード ビハインド イベントに依存する必要がありました。実行および実行可能。
RelayCommand を使用すると、CanExecute デリゲートを提供することで、ボタンを簡単に有効または無効にすることができます。別のデリゲートをボタン (またはメニュー) の IsChecked プロパティに結び付ける方法はありますか?
wpf - アクティブなビューのViewmodelのコマンドへのグローバルKeyBinding
私はこれを持っていますMainWindow.xaml
:
独自のビューモデルを持つ子ビューがいくつかあります。たとえば、aFileView
とaFileViewModel
とaDataView
とがありDataViewModel
ます。OpenCommand
両方のビューモデルで、 :の実装があります。
Ctrl+Oを押すOpenCommand
と、アクティブなビューのビューモデルに対してコマンドが実行されます。したがって、のキーを押すと、FileView
がOpenFile()
実行されます。にキーを入力するとDataView
、OpenData()
が実行されます。ある種のMDI
振る舞い。
上記のコードは機能しません。
このタイプのキーバインド/コマンド処理をどのように実装しますか?
wpf - コマンドはViewModelへのacssessバインドではありません-wpf
Wpf DataGridがあります。キーボードの削除キーをクリックして、ViewModelの関数を呼び出します。これにより、DataGridはViewModelのリストにバインドされます。コードは次のようになります。
データグリッド:
このクラスが保持するDataGridのDataContextはViewModelです
私のViewModel:
クラスXXには、名前(文字列)と値(int)があります
コマンドへのバインドが機能せず、InitializeComponent()でエラーメッセージが表示されます。
次の方法でコマンドへのリンクを記述した場合、エラーは発生しませんが、削除を押しても関数に到達しません。
wpf - パラメーターを使用した RelayCommand CanExecute への MenuItem Visibility バインディング
ViewModel 内でコマンドを作成するために、WPF MVVM アプリで Josh Smith RelayCommand クラスを使用しています。
例えば:
ContextMenu からこのコマンドを呼び出しています。
CanExecute
私のMenuItemがまだ表示されているが無効になっていることを除いて、すべて正常に動作します。リレーコマンドがfalseを返したときにMenuItemが表示されないように、VisibilityをCollapsedに設定したいと思います。
CanRemoveAll(object obj)
Visibility プロパティへのバインドを設定しようとしましたが、パラメーターを使用してメソッドにバインドする方法がわかりません。DataTrigger の使用も考えましたが、その方法がわかりません。
CanRemoveAll
ViewModel での私のメソッドは次のとおりです。
RelayCommand クラスから:
どんな助けでも大歓迎です、
c# - RelayCommand が起動せず、ObservableCollection が選択した値をキャッチしないのはなぜですか?
RelayCommands (Josh Smith の MVVMDemoApp に従って) を使用するのは初めてで、間違いを特定するのに役立つ可能性があります。
私は2つのリストボックスを持っています。最初のリストのアイテムが選択され、[追加] ボタンが押されると、AddCommand が実行され、2 番目のリストの ObservableCollection が selectedItem を追加されます。
私の見解:
私のビューモデル:
前もって感謝します!
また:なぜでしょう:
[追加] ボタンを永久に無効のままにしますか? アイテムが選択されたことをボタンに知らせるために何をしていませんか? これは、コマンドが起動しない理由についての私の理解への同じミッシングリンクのようです。
再度、感謝します!
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つのオブジェクトを作成し、それらを子オブジェクトとしてアタッチします。それは私がそれを持ちたいのと同じように見えます。しかし、実際の機能を動作させることはできません。foo
bar
ViewMenuItem
foreachループの内部(子オブジェクトを作成する場所)は次のようになります。
特に含む行p=>_view.SetSeriesExecute(p)
は私を混乱させます。私はそれとまったく同じように見える多くの例を見つけました。プログラムを実行して子要素の1つをクリックすると、SetSeriesExecute
メソッドは適切に呼び出されますが、パラメーターは常にnullです。それほど驚くことではありません。なぜなら、実際には、型のオブジェクトをSeries
パラメーターとして提供することはないからです。私は次のようにRelayCommandコンストラクターでパラメーターを提供しようとしました:p=>_view.SetSeriesExecute(mySeriesObject)
。コンパイルされますが、SetSeriesExecute
呼び出されることはありません。
私の目標は非常に単純です(少なくともそうだと思います):プログラムがコンテキストメニューの要素のクリックに反応するとき、メソッド(SetSeriesExecute
)は、ユーザーが実際に選択(=クリック)した項目を知る必要があります。残念ながらSetSeriesExecute
、4時間の真剣な調査にもかかわらず、パラメータをどこにどのように提供できるかを理解できませんでした。そして、他の誰もが利用可能な例を理解しているように見えるという事実は、私が自分自身について特に気分が良くなるわけではなく、すべてのヒントに生涯の感謝を捧げます。
最高のピーター
.net - デリゲートと RelayCommand
メソッドへの参照を作成し、「外部」コード (別の dll/プロジェクト) から参照できるという点で、デリゲートに頭を悩ませていると思いました。
現在、MVVM を使用していますが、デリゲートが渡されるのと同じ方法でパラメーターとしてメソッドを渡しているように見える RelayCommand と呼ばれるものが表示されます。これはどのように可能ですか?
私が見ているコードは
RelayCommand オブジェクトは
では、デリゲートがないので、Action<> オブジェクトで何らかのトリックが発生していると想定できますか?
silverlight - xaml で RelayCommand をバインドするための DataContext の設定
ResourceButtonClick
次の xaml コードでは、ビュー モデルにあるRelayCommand をバインドしようとしています。それに加えて、Resource.Id
このコマンドにパラメーターとして を渡したいと思います。
ただし、ResourceButtonClick
呼び出されません。ItemsSource
を に設定することResources
で、ビュー モデルであるデータ コンテキストをオーバーライドしたと思われます。
これRelayCommand
がビューモデルです。
ビュー モデルのコンストラクター:
ビューモデルのメソッド:
2 つの質問があります。まず、ResourceButtonClick
コマンドを呼び出すにはどうすればよいですか。Resource.Id
次に、そのコマンドにパラメーターとして渡すにはどうすればよいですか。
任意の提案をいただければ幸いです。
mvvm - ICommandは常にパラメーターとしてオブジェクトを必要としますか?
インターフェイスを実装するICommand
と、次のメソッドが作成されます
興味深い部分は
1つのパラメーターが必要であることを示しているからです。パラメータを渡す必要がない場合はどうなりますか?私のViewModelには次のコードがあります
このOpenDialog
メソッドはパラメーターを必要としませんが、インターフェイスを満たすために必要なように見えます。
私はこれを正しく行っていますか、それとも要点を見逃しましたか?
c# - サービスクラスからのビューモデルでのrelayコマンドの実行
「名前/背景」などの各ノードの設定を使用して、カスタムTreeViewクラスを作成します。また、必要に応じて各ノードでカスタムメソッドを実行できるように設定できるICommandプロパティもあります。
これらすべてを「ツリービューサービスクラス」で構築し、MVVMLightメッセンジャーを介してメニューをユーザーコントロールに送信します。これはすべて問題なく機能しますが、私の問題は、ノードにカスタムコマンドを指定しない場合、Messengerサービスからメッセージを受信するビューモデルにある「デフォルトアクション」を実行することです。
基本的に私の質問は次のとおりです。ツリーを構築するときに、別のビューモデル(またはサービスクラス)からRelayCommandを参照できるように、MainViewModelでRelayCommandを公開するにはどうすればよいですか。