問題タブ [commandparameter]
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 - MultiBinding を使用して複数の CommandParameters をバインドする際に追加のヘルプが必要
複数のパラメーター、つまり、前述のトグルボタンの IsChecked プロパティと、文字列、バイト、整数などの定数値を取ることができるトグルボタンのコマンドハンドラーが必要です...問題ありません。
SOでこの素晴らしい質問を見つけ、回答のリンクをたどって、MultiBindingとIMultiValueConverterを読みました。MultiBinding を書かなければならないまではとてもスムーズに進みました。
その後、Kent Boogaart が回答した別の同様の質問に出くわし、これを回避する方法を考え始めました。
考えられる方法の 1 つは、MVVM を使用せず、単に Tag プロパティを ToggleButton に追加することです。この場合、MultiBinding は次のようになります。
Kent は、「MVVM を使用している場合は、この問題を回避できるはずです」というコメントを出しています。ただし、必要な選択の WPF パターンとして MVVM を採用したにもかかわらず、それが私にとっての選択肢であるかどうかはわかりません。
私がこれを言う理由は、UserControl に複数の ToggleButton があり、各 ToggleButton のコマンドが同じ関数を呼び出す必要があるためです。しかし、それらはトグル ボタンであるため、ViewModel で IsChecked にバインドされたプロパティを使用することはできません。これを追跡するために別のプライベート プロパティを追加できると思いますが、少しばかげているようです。定数に関する限り、追跡のアイデアを実行すればおそらくこれを取り除くことができますが、それを回避する他の方法はわかりません.
ここで私に良い提案はありますか?:)
編集- わかりましたので、バインディングを更新する必要がありますが、まだ正しく動作しません:
IsChecked は機能していましたが、Tag は機能していませんでした。Tag が文字列であることに気付きました...当たり前です。それは今働いています!重要なのは、 Selfの RelativeSource を使用することでした。
wpf - 現在の要素のプロパティをWPFのコマンドパラメーターとして送信するにはどうすればよいですか?
背景色のボタンがあり、この背景色をコマンドパラメータとしてコマンドバインディングに送信したいと思います。どうやってやるの?
wpf - WPF: メニュー項目はコマンド パラメータを 1 回のみバインドします
コマンドでメニューを使用しているときに、これに数回気づきました。これらはあまり動的ではありません。これを確認してください。色のコレクションからメニューを作成しています。それを使用してデータグリッドの列に色を付けています。とにかく、最初にメニュー(コンテキストメニュー)を表示すると、コマンドパラメーターのバインドが発生し、コンテキストメニューが開かれた列にバインドされます。ただし、次回起動すると、wpfがメニューをキャッシュしているようで、コマンドパラメーターを再バインドしません。そのため、コンテキストメニューが表示された最初の列にのみ色を設定できます。
メニューを完全に動的にして、メニューを閉じたときにコレクションを破棄し、次に開いたときに強制的に再構築することで、過去にこの状況を回避しました。このハックは好きではありません。誰かがより良い方法を得ましたか?
wpf - WPFCommandParameterバインディングが更新されない
WPFアプリケーションでボタンを使用してCommandおよびCommandParameterバインディングを使用しようとしています。これとまったく同じコードがSilverlightで正常に機能しているので、何が間違っているのか疑問に思っています。
コンボボックスとボタンがあり、コマンドパラメーターはコンボボックスSelectedItemにバインドされています。
背後にあるコードは次のとおりです。
私のSilverlightアプリケーションでは、コンボボックスのSelectedItemが変更されると、CommandParameterバインディングにより、コマンドのCanExecuteメソッドが現在選択されている項目で再評価され、それに応じてボタンの有効状態が更新されます。
WPFでは、何らかの理由で、CanExecuteメソッドは、XAMLの解析時にバインディングが作成されたときにのみ呼び出されます。
何か案は?
wpf - 現在の Window を CommandParameter として渡す
現在表示しているウィンドウをパラメーターとしてコマンドに渡すにはどうすればよいですか?
XAML マークアップでこれを行うのが好きです。
xaml - XAML で CommandParam に列挙値を設定する方法
UI の状態を表す次の列挙型があります (UI 要素を有効または無効にするために使用します)。
Mode.EDIT を CommandParam のコマンドに渡したい:
しかし、私はそれを宣言する方法がわかりません。ボタンの宣言でわかるように、StaticResourceを使用しようとしましたが、失敗しました。私は SL4 と C# にまったく慣れていないので、何かを見逃していると思います。
asp.net - パラメーターを使用して SqlDataSource SelectCommand でテーブル名を構成する
データベース内の会社名のテーブルにバインドされた DropDownList を持つ ASP.NET 3.5 Web フォームがあります。GridView の SqlDataSource の SelectCommand が次のようになるように、DropDownList で選択された会社名に応じて、データベースからのデータで更新したいデータ バインドされた GridView もあります。
{CompanyName} は、DropDownList で選択されているものです。Command and Parameter Editor を使用して、DropDownList の SelectedValue を指す ControlParameter を作成しましたが、SelectCommand クエリを記述してパラメーターを「_VehicleData」に連結する方法がわかりません。何かご意見は。
mvvm - MVVM を使用して Silverlight のコマンドに CommandParameter を渡す
私はちょうど Silverlight を学んでいて、MVVM と Commanding を見ています。
OK、基本的な RelayCommand の実装を見てきました。
これを使用してコマンドでパラメーターを渡すにはどうすればよいですか?
次のように渡すことができることがわかりましたCommandParameter
:
私の ViewModel では、コマンドを作成する必要がありますがRelayCommand
、Action
デリゲートが必要です。RelayCommand<T>
を使用して実装できますかAction<T>
- もしそうなら、どのようにそれを行い、どのように使用するのですか?
既存のライブラリを使用する前に完全に理解したいので、サードパーティのライブラリ (MVVM Light など) を使用しない MVVM を使用した CommandParameters の実用的な例を教えてください。
ありがとう。
wpf - IMultiValueConverter の値は問題ありませんが、CommandParameter は null です
IMultiValueConverter を介してコマンドに (コマンド パラメーターとして) いくつかの値を渡そうとしています。値がコンバーターを通過するときは正しいのですが、Can_Execute() および Execute() コマンドが呼び出されると、null オブジェクトの配列が取得されます。何か案は?
Xaml:
IMultiValueConverter クラス:
MultiBinding とコンバーターを使用していないときは、コードは問題なく機能しましたが、コマンドに追加情報を渡すことができるように、MultiBinding が必要です。
wpf - 列挙型を MVVM Light RelayCommand にバインドするCommandParameter
以下のように、RelayCommand の XAML でコマンド パラメーターをバインドしようとして<MessageTokens
います。ここで、MessageTokens は列挙型です。
XAML は次のとおりです。
Telerik の RadGridView を使用すると、コードがクラッシュします
等
パラメータを RelayCommand <string
> の代わりに RelayCommand >に変更すると<MessageTokens
、コードは正常に実行されます。
パラメータを厳密に入力することのすべての利点を失うため、これを行うのは嫌いです。
XAML で列挙型を適切に宣言していないと思われます。私はもう試した
しかし、MVVMLight で InvalidCastException が発生します。
誰か提案はありますか?
どうもありがとうジェレミー
ソリューションで編集
問題は、CommandParameter バインディングの内部クラスを + 記号で適切に参照していなかったためです。
正しい XAML は次のようになります。