問題タブ [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.

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

wpf - マルチバインディングに NotifyOnTargetUpdated があるのに TargetUpdated プロパティがないのはなぜですか

TargetUpdated イベントが完璧に思えるという問題に遭遇しました。残念ながら、Multibinding には TargetUpdated プロパティがないようです。これをまだ設定する方法はありますか、それとも完全に別の解決策を見つける必要がありますか?

役立つコードをいくつか紹介します

バインディングはこちら...

次に、値コンバーターがあります...

そして、私が探しているのは、その結果の数値を取得し、それを関数に渡して角度/アニメーションを更新することです

^ この関数は、2 つの依存関係プロパティのいずれかからのコールバックにすることで、実際に機能することを確認するためにテストしていました。理想的には、TargetUpdated イベントで使用したいのは関数本体です。

0 投票する
4 に答える
58356 参照

wpf - マルチバインディングで1バインディングの定数値を渡すにはどうすればよいですか?

私はのようなマルチバインディングを持っています

そして、上記の2つのバインディングのいずれかに「123」などの固定値を渡したいと思います。XAMLを使用してそれを行うにはどうすればよいですか?

0 投票する
0 に答える
2918 参照

wpf - Item(行)のオブジェクトのプロパティをWPF DataGridのDataGridCellプロパティにバインドする

Release WPF を使用して (もちろんサポートしています)DataGridのプロパティにバインドしようとしています。をof 型(Dr.WPF から継承される)の型にバインドしていますが、 のプロパティにバインドしたいと考えています。CellViewModelINotifyPropertyChangedDataGridItemsSourceObservableCollectionRowViewModelObservableDictonaryCellViewModelCellViewModel

たとえば、次の例では、ブール値のDatagridCell.FontStyleプロパティに基づいてプロパティの状態を変更しようとしています (イタリック体の場合)。CellViewModel.IsLockedIsLocked

最初に、関連する CellViewModel オブジェクトを XAML で公開します。

RowColumnToCellConverter は

次にDataTrigger、XAML でを作成します。

これは機能しませんが、私がやりたいことの例ですうまくいけば、そう遠くないでしょう。確かに、MultiBindingはここで設定されることはありません (Converterはデバッグでチェックと呼ばれることがないため)。

他の場所では、MultiBinding/MultiConverter(この投稿ではエラーが発生しなかったことを願っていますが)(上記のように StaticResource としてではなく)の一部として機能DataTrigger/MultiTriggerしますが、それは自分自身にバインドされていないオブジェクト。

つまり、返されるオブジェクトがrow[col].Islockedであるコンバーターのバリアントを持つことができますが、IslockedプロパティはPropertyChange通知に登録されていません。

MultiBind がオブジェクトを返すまで、3 番目のバインド ステートメント{Bind Path=IsLocked}が参照するIsLockedものがないため、元の MultiBind の BindingCollection の 3 番目のバインド ステートメントとしてプロパティを追加することはできません(または追加できますか?)。 .

そのため、オブジェクトではなく Binding オブジェクトのみを受け入れるMultiBindingため、機能しない次のようなネストを試みました。BindingCollectionMultBinding

私の試みた解決策が遠く離れていても、私の問題が上記から明確になることを願っています。それで、私は何が欠けていますか?(私は数週間しか WPF/MVVM を使用しておらず、これは DataGrid を操作するための非常に基本的な要件であるため、おそらく多くの場合、答えが恥ずかしいほど単純であることを願っています)。

0 投票する
3 に答える
2959 参照

c# - wpfでのtreeviewマルチバインディング

ツリービューを次のようなクラスにバインドしたいと思います。

他のクラスは次のとおりです。

ファイルとフォルダのコレクションを表示するツリービューを作成するにはどうすればよいですか

私はこのようなものを使いたい:

だから私はこのようなSomethignを取得します:

ルートフォルダ

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

wpf - マルチバインド 複数選択 ListView

OK、ここに奇妙なものがあります。私が理解しようとしているのは、最初のリストビューの選択に基づいて、ObservableCollection によって取り込まれた 1 つのリストビューを作成し、別の ObservableCollection によって取り込まれた別の ListView を更新し、次に valueconverter を使用して、組み合わせた選択に基づいてチェックボックスをオンまたはオフにする方法です。 2 番目のリストビューに現在のアイテムが表示されます。この部分は、マルチバインディングを使用して多少作業していますが、困惑している部分は、2番目のリストビューでアイテムをチェックまたはチェック解除するときに、そのイベントとそのリストビューで現在チェックされているすべてのアイテムを取得できるようにする必要があることです。それに基づくデータベースフィールド。

私はこれがあまり意味をなさないかもしれないことを知っています. セカンドリストビューのチェックボックスをオンまたはオフにすると、コンバーターが ConvertBack メソッドを実行しようとして失敗することがわかりますが、単に null を返すように設定すると、コードは失敗しなくなりますが、チェックボックスは強調表示されます検証エラーが発生したように赤で。

マルチバインディングがここに行く方法であるかどうかさえわかりません.Josh Smithのマルチセレクションリストビューのものを見てきましたが、必要な変換では、それをうまく実装する方法もわかりません.

誰かが何かアイデアを持っているなら、私はそれを大いに感謝します. また、私の必要性を明確に説明しなかった場合は申し訳ありませんが、混沌とした説明とコードで、私がどこに向かっているのかを確認できることを願っています.

前もって感謝します!

2 番目の ListView にフィードする最初の ListView

コンバーターとマルチバインディングを使用した 2 番目の ListView

値コンバーター

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

wpf - WPF コントロールを複数のソースにバインドする (従来のマルチバインディングではない)

私はいくつかのデータバインディングの魔法をやろうとしています。出荷を一覧表示する出荷ビューがあり、リストのフィルタリングと注文機能を提供しています。フィルター文字列ボックス、配信ステータス フィルター (チェックボックス)、および注文ラジオボタンは、ViewModel のプロパティにデータ バインドされています。状態を保存する機能を追加したいので、コントロールの状態を xml ドキュメントに保存することでこれを行うことにしました。以前は、データバインディングを使用して値を読み書きするだけで、ほとんど問題なくこれを行っていました。

しかし、今、私は困惑しています。私のフィルター コントロールは現在、ViewModel の項目にデータ バインドされています。ロード時にデータバインディングを xml から ViewModel に、またはその逆に変更するコードを書くことはできますが、それは面倒です。

2 つの等しいソースにバインドし、それらを同時に更新する機能を実現するために使用できるメカニズムはありますか?

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

.net - 1つのバインディングで2つのプロパティ?

1回の入札で2つの要素を組み合わせることができますか?

線の始点と終点を左のドットにバインドするだけでなく、(Left + Width / 2)と(Top + Height / 2)(中央)を追加する必要があります。

それは可能ですか?

0 投票する
3 に答える
6574 参照

.net - WPF - MVVM を使用して、モデルのさまざまな状態に基づいてさまざまなコントロールを無効および有効にするエレガントな方法

次の問題のエレガントな解決策を探しています。

次のブール値プロパティを持つ (View)Model があるとします。

  • アルファ
  • ベータ
  • ガンマ
  • デルタ

次に、これらのプロパティに基づく条件が満たされた場合にのみ表示されるサーフェスに 5 つのコントロールがあります。もちろん、これらのプロパティのいずれかが更新されるとすぐに、変更がすぐに反映されます。

  • ControlA -> アルファ && (ベータ || ガンマ)
  • ControlB -> デルタ
  • ControlC -> デルタ || ベータ
  • ControlD -> ガンマ && アルファ && デルタ
  • ControlE -> アルファ || ガンマ

これまでに思いついた唯一の解決策は、MultiValueConverters を使用することです。

コントロール A の例:

この ControlAVisibilityConverter は、条件「Alpha && ( Beta || Gamma )」をチェックし、適切な値を返します。

それはうまくいきます..うまくいきます..しかし、もっとエレガントな解決策を思い付くことができますか?

ありがとう、TwinHabit

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

c# - コードビハインドで Multibinding.StringFormat を使用する

動的な言語切り替えが組み込まれたこのアプリケーションがあります。選択したカルチャに基づいて、アプリケーション全体の文字列が変更されます。翻訳された文字列とその元の値は、リソース ファイルから取得されます。ボタンやラベルなどにリソース値をアタッチするためにバインディングを使用します。このバインディングのほとんどはコード ビハインドで発生します。

Binding.StringFormat プロパティを使用して、ローカライズされた文字列をデータと連結できました。

「アイテムの数」について。私の問題は、コード ビハインドで 2 つ (またはそれ以上) のローカライズされた文字列を連結する必要があることです。MultiBinding を使用してバインディングを追加できることにすぐに気付きましたが、現在の動作を維持していますが、MultiBinding.StringFormat を使用しても動作しないようです。2 つのバインディング値の間にスペースを挿入しようとしていますmyMultiBinding.StringFormat = "{0} {1}";が、「Greetings」ラベルにバインドすると空白に見えます。

パス値に基づいてバインディングを取得する GetBinding() 関数は次のとおりです。

また、.NET 4 を使用していることにも注意してください。Xaml でも動作しないようです。4.0で機能しなかった後、.NET 3.5でもこれを試しました。両方の子バインディングが機能しています...コンバーターを指定すると、値が表示されます。私はむしろ StringFormat プロパティを使用したいと思います。

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

wpf - WPF、チェックボックスのリストボックスへのCSVのマルチバインド、およびMVVMのベストプラクティス

私はWPFとMVVMのアイデア全体に比較的慣れていないので、ベストプラクティスに関するアドバイスを探しています。動作するソリューションがありますが、全体を単純化する優れたXAML構文が欠落しているように感じます。

「CAT、DOG」などのCSVとして保存されているデータベーステーブルに文字列フィールドがあります。おそらく、エンティティデータモデルで多対多の関係としてこれを行うべきでしたが、それは別のベストプラクティスの議論です。

XAMLでは、CheckBoxを含むListBoxでマルチバインディングを使用しています。可能な選択肢のドメインは実行時に決定され、ListBoxはDataTemplateを使用してチェックボックスを生成します。XAMLは次のとおりです。

コンバーターを使用して、適切なチェックボックスをチェックします。コンバーターのConvertBackメソッドを取得してブール値をCSV文字列に変換しようとしましたが、渡されたすべてのBrandedProductNameにアクセスする方法がわかりませんでした。コンバーターは次のとおりです。

したがって、Convertは、エンティティが選択されたときに適切なチェックボックスを適切にチェックしますが、新しいチェックボックスを追加するときに、CheckBoxのCheckedおよびUnCheckedイベントハンドラーを使用して、次のようにエンティティに書き戻すことができると考えました。

あなたがまだ私と一緒にいるなら、問題はこれを行うためのより良い方法は何ですか?コンバーターを使用してエンティティからビューを生成し、イベントハンドラーを使用してビューの更新/コマンドをエンティティに戻すと、リンゴとオレンジのように感じます。イベントハンドラーを使用してViewModelをこのように変更することは、MVVMのいくつかの目標に違反しますか?

提案を事前にありがとう、レイ