XAMLバインディングを介して依存関係プロパティに初めてアクセスしたことを知る方法はありますか?必要なときにプロパティの値を実際に「レンダリング」できますか?
100または1000のポイントを含む可能性のあるいくつかのPointCollection依存関係プロパティを持つオブジェクト(Controlから派生したクラス)があります。各プロパティは、さまざまなタイプの形状(ポリライン、ポリゴンなど-これよりも複雑ですが、アイデアは得られます)で使用するために、ポイントをさまざまに配置できます。テンプレートを介して、さまざまなXAMLオブジェクトがTemplateBindingを使用してこれらのプロパティにアクセスします。オブジェクトがテンプレートを使用しているため、オブジェクトに使用されているXAMLシェイプがわからないため、バインドできるプロパティとバインドできないプロパティがわかりません。これらのPointCollectionは、実際に必要な場合にのみ入力したいと思います。
通常、.NETでは、プロパティのゲッターにいくつかのロジックがありますが、これらはXAMLデータバインディングによってバイパスされます。
WPFとSilverlightと互換性のあるソリューションが必要です。
オブジェクトのユーザーにとって追加の複雑さを回避するソリューションが欲しいです。
アップデート
これを行うために私が見つけた1つの方法は、ValueConvertersを使用することです。私の状況では、複数のポイントコレクションがありました。主要な部門がありました。データの通常の形状を含むプロパティ。他の領域/コンテキストで再利用するには、2つの代替形状が必要でした。
最初は3部でした。小道具。ただし、1つのプロパティ(通常の形状)を使用し、変換された値を使用して、ポイントを他の2つの目的の形状に変換することもできます。これを行うと、コントロールに1セットのポイントのみが作成されます。ポイントを2次形状に変換する費用は、使用した場合にのみ発生します。これで、メインコントロールは、コントロールでスローされる可能性のあるすべてのテンプレートをデータがどのように検索する必要があるかを予測する必要がなくなりました。これで、テンプレートデザイナーの問題になります。
アップデート2
確かに、INotifyPropertyChangedと通常のプロパティがこれを処理するための推奨される方法です。