C#プロジェクトでは、リストと辞書にネストされたクラスが多数ある複雑なモデルがあります(たとえば、オブジェクトA
はB
のインスタンスのリストを持ち、値はC
のインスタンスです)。 私のページの1つでは、このモデルはネストされたItemsControl
を使用して複雑なビューで表示されます。UWP内の複数のプロパティにバインド
さらに、ユーザーの設定を保存するクラスがあります。そのうちのいくつかはページのチェックボックスにバインドされています。
ここで、DataTemplate
内の一部のコントロールのプロパティを、モデルプロパティと設定の組み合わせにバインドします。たとえば、C
にはプロパティーIsBoring
があり、設定値はSettings.HideBoringStuff
であるとします。私はTextBlock
を表すC
の可視性を、これらの特性の明白な組み合わせにバインドしたいと思います。
私は醜いハッキングなしでそれを行う方法はわかりません。 は、ここに私のアイデアのいくつかをしているし、彼らが動作しない理由:
は、具体的にこれを行うために設計されて
MultiBinding
、使用してください。ただし、MultiBinding
はUWPプロジェクトでは使用できません。Bind to multiple properties on the page that implement the logic in their getters and setters.私は
DataTemplate
の中にいるので、これは機能しません。したがって、私はこのロジックの複数の独立したコピーが必要です。ConverterProperty
として設定を渡してモデルプロパティを変換するには、Converter
を使用します。しかしながら、ConverterProperty
はnoDependencyProperty
であり、従って結合することができない。モデルに必要なプロパティを正しく組み込みます。–
Settings
はとにかくシングルトンです。これは、私のモデルに不要な依存関係とロジックを混在させるので、実際には醜いと感じます。モデルクラスをラップする別のクラスを作成し、
Settings
オブジェクトを格納してから、組み合わせプロパティを提供します。私はモデルのオブジェクト階層全体を再現する必要があるので、これは本当に醜いと感じています。 (値はViewC
Sに対応している場合の例では、ViewA
辞書を持ってそれぞれがViewB
S、のリストを提供する必要がある。)Wait for Microsoft to bring
MultiBinding
back.不幸は、私は必要な楽観を欠いています。
これは、UWPアプリケーションでこれを行うためのきれいな方法ですか?
利用可能である。これは有望に見える、ありがとう!私はすぐにそれを調べます。 – fefrei
私はそれがあなたの問題を解決することを願って:) – Depechie
それは実際に働いている!それでも、設計時には、XAMLパーサがエラーを表示します( 'コレクションプロパティ__implicit_items is null')。理由は何ですか? – fefrei