2015-12-09 15 views
5

C#プロジェクトでは、リストと辞書にネストされたクラスが多数ある複雑なモデルがあります(たとえば、オブジェクトABのインスタンスのリストを持ち、値は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を使用します。しかしながら、ConverterPropertynoDependencyPropertyであり、従って結合することができない。

  • モデルに必要なプロパティを正しく組み込みます。– Settingsはとにかくシングルトンです。これは、私のモデルに不要な依存関係とロジックを混在させるので、実際には醜いと感じます。

  • モデルクラスをラップする別のクラスを作成し、Settingsオブジェクトを格納してから、組み合わせプロパティを提供します。私はモデルのオブジェクト階層全体を再現する必要があるので、これは本当に醜いと感じています。 (値はViewC Sに対応している場合の例では、ViewA辞書を持ってそれぞれがViewB S、のリストを提供する必要がある。)

  • Wait for Microsoft to bring MultiBinding back.不幸は、私は必要な楽観を欠いています。

これは、UWPアプリケーションでこれを行うためのきれいな方法ですか?

答えて

4

新しいwinデベロッパースタックでは、Multibindingはこれまでになかったことは間違いありません。しかし、Cimbalinoツールキットは早いwp8日以来それを持っていました。 これにはUWPポートもあります。

だから多分それを試してみてください!使用を説明する初期の頃から

ブログ投稿:https://www.pedrolamas.com/2013/05/17/cimbalino-windows-phone-toolkit-multibindingbehavior/ はCimbalinoのホールドを取得するにはnugetを通じて行われ、ここではGithubの上https://github.com/Cimbalino/Cimbalino-Toolkit

+0

利用可能である。これは有望に見える、ありがとう!私はすぐにそれを調べます。 – fefrei

+0

私はそれがあなたの問題を解決することを願って:) – Depechie

+0

それは実際に働いている!それでも、設計時には、XAMLパーサがエラーを表示します( 'コレクションプロパティ__implicit_items is null')。理由は何ですか? – fefrei

関連する問題