カスタムエディタのアレンジ・計測アルゴリズムを書いています。エディターは、カスタムの UserControl 派生クラスをキャンバス上のコントロールとして使用します。これらのコントロールは、データ モデル オブジェクトのさまざまなプロパティ/リストにバインドされたデータです。カスタム コントロールの測定と配置は、バインドされるデータ (データがコントロールのサイズに影響するため) に大きく依存し、コントロールが測定および配置される順序にも依存します。MSDN の WPF ドキュメントから判断できたことから、データ バインディングは実際には実行されるまでは実行されません。コントロールが測定および配置され、コントロールがロード済みとしてマークされる直前。私が知る限り、これは、カスタム キャンバスを実際に測定して配置する前に、すべてのコントロールが読み込まれるのを待たなければならないことを意味します。その結果、キャンバスにフラグを設定して、いつ測定/配置できないかを判断し、このフラグを使用して無効化と再描画を強制する必要があります。私が知らないキャンバス上でカスタマイズされた測定/配置のためのより良い方法はありますか? WPF で早期データバインディングを強制する方法はありますか?
質問する
802 次
2 に答える
0
データバインドされたプロパティが、制御するカスタムDependencyPropertiesである場合は、DPのメタデータプロパティを設定して、それらがAffectMeasureおよびAffectArrangeであることを示すことができます。
これにより、これらのDPの値が変更された場合に、WPFに再測定と再配置を指示します。
これは、DPをFrameworkPropertyMetadataに登録するときに設定します。http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspxを参照してください。
于 2011-04-06T23:15:42.033 に答える
0
[Measure|Arrange]Override メソッドでチェックを行い、実際にコントロールを測定して配置する前に、すべてのアイテムが読み込まれ、ItemSources と DataContexts が設定されていることを確認して、データ バインディングの制限を回避する必要がありました。誰かがこれを行うためのより良い方法を見つけたら、ここに投稿してもらえますか? それは大歓迎です。
于 2011-06-01T17:31:41.417 に答える