問題タブ [multibinding]
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.
java - Multibinding を使用して Guice のロボット脚の例を一般化する
この使用例は、Guice のロボット脚の例と非常によく似ていますが、「脚」の数がわからない点が異なります。したがって、ロボットの脚の例に必要な注釈を使用できません。
Guice の Multibindings 拡張機能を使用して、これらすべての「足」を java.util.Set に集めることを期待しています。
技術的には、PrivateModule では、Multibindings 拡張によって提供されるセットの要素として実装を直接公開したいと考えています。私はそれを行う方法がわかりません。
リファレンスとコード例については、ロボット脚の例を参照してください: http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_similar_but_slightly_different_trees_of_objec
これが私の正確なユースケースです:
私は次のものを持っています:
私は拡張 jar について話しているので、最初はそれらを知りません。それらがいくつ存在するかさえ知りませMyModuleん。わかった)。j.u.ServiceLoaderMyInterface
問題は、すべてのMyInterface実装を 1 つのセット ( MyManager) にまとめることです。どうやってやるの?
完全にジェシーの答えに基づいた解決策:
これにより、「顧客」に PrivateModule の拡張を強制するのではなく、MyModule が Module を拡張するインターフェースである場合は、任意のモジュール実装を使用できます。
wpf - コンボボックスのテキストをドロップダウン リストにないレガシー データにバインドするにはどうすればよいですか?
コンボボックスのドロップダウン リスト (itemssource) に、新しい製品リクエスト アイテムが含まれています。ドロップダウン リストにないレガシー データにバインドしたいと考えています。複雑にするために、IMultiValueConverter でマルチバインディングを使用してフィールドを結合して表示しています。また、バインドされたフィールドの名前が、バインドされているプロパティの名前と一致しません。
コンボボックスの itemssource は、NewProductRequests のリストです。この NPR オブジェクトから NewProdNumber と NewProdName が結合され、型コンバーターによってドロップダウン リストに表示されます。ConvertBack メソッドは、値 NewProdNumber および NewProdNumberCombinedWithName を返します。これら 2 つの値は、わずかに異なる名前でデータベース フィールドに保存されます。この例では、DBProdRequestNumber および DBProdRequestTitle と呼びます。
新しいアイテムの表示と保存に成功しました。問題は、リストにないレガシー データを表示する方法を理解していないことです。新しい製品リクエストとしての資格がなくなったため、リストにありません。
問題の XAML は次のとおりです (itemssource はコード ビハインドで設定されています)。
Julie Lermanのこの MSDN Magazine の例に基づいて、DataGridTemplateColumn.CellEditingTemplate を使用して解決したデータグリッドとコンボボックスの同様の問題。もちろん、この場合、データグリッドは使用していません。
助けてくれてありがとう。
c# - 出力のマルチバインディングエラー
2つのプロパティに応じて有効になるボタンがあります。コンバーターでマルチバインディングを使用しました。
すべてが機能しますが、出力は次のように言い続けます。
同様の問題に関するいくつかの質問がここにあります: WPFマルチバインディングが失敗します。なんで?
簡単な解決策はありますか、それともViewModelでロジックを作成し、1つのプロパティにバインドする必要がありますか?
コード:XAML:
コンバータ:
ViewModel変数は2つのブール値です
wpf - コード ビハインドのデータ コンテキストとプロパティに同時にアクセスする
私はMVVM/WPFを使用していて、一見単純なことをしようとしていますが、きれいな解決策が見つかりません。
私は次のことをしたい:
モデルでプロパティが変更された場合 (この場合、WPF Textbox テキストが変更されます)、メソッドを使用して、バインドされたプロパティに関連する UI で他の操作を実行します。
現在、ツールチップでマルチバインディングを使用しています(テキストボックスのデータコンテキスト+バインディングパスを取得するため)が、これはちょっとしたハックです。
何かを再利用可能にして、おそらく別のコントロールにしたいので、 textchanged イベントを使用しているだけではありません。
誰かが私を正しい方向に向けることができれば、それは大歓迎です。
c# - ConvertorでのWPFマルチバインディングが失敗する==>DependencyProperty.UnsetValue
Converterによって呼び出されるのvalues配列が適切な値で満たされていませんが、値がMultibinding。であるため、起動時にコードが失敗します。 DependencyProperty.UnsetValue
Convertorを見て、エラーが発生する場所も確認してください
以下のように、完全なコードをダウンロードするか、私のコードスニペットを見ることができます。
MainWindow.xaml
MainWindow.xaml.cs
そしてこれがViewModelクラスです。
PageViewModel.cs
PageNumberViewModel.cs
wpf - TreeViewのMultiBindingは、Bindings値の1つが変更されると、TreeViewItemsを折りたたみます。
名前属性と2つのリストを持つタイプビューのオブジェクトにバインドするTreeViewがあります。展開されたリストの1つに要素を追加すると、展開されたままになり、それが必要です。問題は、View1の名前を変更すると、すべてのMultibingingバインディングが更新され、View1に展開されているすべてのリストが折りたたまれても、View1は展開されたままになることです。Nameの値が変更されたときに、コンバーターが他のバインディングを照合せずに変更された値のみを変更するように、この動作を回避する方法はありますか?ありがとうございました
wpf - ColumnDefinitions のマルチバインディングの WPF
次のGridようなセグメントを保持する があります。
各セグメントの視覚的な長さは全長に依存し、その位置は前のセグメントの終わりに依存します。
MultiBindingこれを達成するには、 Width of 3 を計算しますColumnDefinition。
最初は、各アイテムが正しく配置されるように全体を計算しようと考えColumnDefinitionsましたが、実際には、コンパイラは Grid.ColumnDefinitions をバインドすることを許可しません。つまり、これを行うことはできません。
だから今、私の唯一の選択肢は 3 を作りIMultiValueConverters、3つをそれぞれのコンバーターにバインドColumnDefinition.Widthし、すべてを計算することだと思っています...しかし、それは非常に厄介に聞こえます。 -ダウン」アラームが鳴りました。
これをエレガントに行うアイデアはありますか?
ありがとう!
編集: Yurek のコードを少し修正しました: (それはあなたが意図したものですか? または私はそれを破壊しましたか? :p)
wpf - 表示されている場合を除いて、マルチバインディングで TreeViewItems が生成されないのはなぜですか?
マルチバインディングを使用して、クラス A 2 TreeViewItems のすべてのインスタンスをクラス B のリストとして生成する 3 レベルの TreeView があります。そして、すべての List に Items が含まれています。これは Class C と言えます。
リスト (クラス B) が折りたたまれている間、UI の各リストにクラス C のアイテムを追加できます。TreeViewItem(Class A) 全体が collapsed である間に、各 List(Class B) に Class C を追加することもできます。
私の問題は、たとえそれらが折りたたまれていても、すべての TreeViewItems にアクセスできるようにする必要があることです (たとえば、それらを選択するため)。
私はそうしようとしましたが、次の問題が発生しました:
1- 表示されないすべての TreeViewItems (クラス B および C) は、まだ TreeViewItems として作成されていません (どのように作成できますか?)
2-クラスBのTreeViewIiemを初めて展開すると、そのすべてのアイテム(クラスC)がTreeViewItemsとして表示されます(明らかに些細なことです)
3-特定のクラス A TreeViewItemで任意のクラス B (2 つしかありません) を展開した後に折りたたむと、TreeViewItem(クラス A) 全体が折りたたまれている場合でも、クラス C インスタンスをTreeViewItemsとして追加できるようになります。このクラス A TreeViewItem で)
4- 選択したクラス A を変更すると (つまり、選択したものとは異なるクラス A の祖先を持つ別の TreeViewItem をクリックした場合)、以前に選択したクラス A の表示されていないすべての TreeViewItem が失われます。新しく選択したクラス A でステップ 1 からやり直すことができます。
では、いつでもクラス C または B の TreeViewItem を選択するにはどうすればよいでしょうか。
ありがとうございました
c# - 共通のパラメーターを使用して 2 つのコレクションをバインドする
2 つの異なる ObservableCollection のコンテンツを同じグリッドに表示したいと思います。それらには共通のパラメーター (ID) があり、この ID のおかげで 2 つのコレクションをリンクしたいと考えています。マルチバインディングを使用する必要があると思いますが、ID を「リンク」したいのはどのように言えますか?
私が十分に明確でない場合は、私に言ってください。
ありがとう、
M.