2010-11-22 5 views
3

添付プロパティの値を取得して、ツリーから親からビジュアル階層のツリーに伝播するのに問題があります。設定は次のとおりです。添付プロパティの継承を伝播する

私はViewport3Dをインスタンス化するカスタムパネルを持っています。次にPanelは追加および削除された子を処理して、各子アイテムの継承されたVisual3Dクラスを作成して追加します。

AttachedToggleプロパティという名前の添付プロパティを宣言しようとしています。このプロパティをAttachedToggleという名前の外部所有者クラスに配置して、添付された単一の依存プロパティIsCheckedを実装し、親Panelまたは子Visual3D要素のいずれかが値を変更し、他の要素のインスタンスを持つことができるようにしたい値は変更を反映します。 PanelもVisual3Dクラスも共通の基盤を継承しません。これはできますか?

私は正常に設定/ GetValueメソッドを使用して、アプリケーションコードからにisCheckedの親と子のインスタンス値の両方を変更するが、変更が伝播するために取得することができませんすることができます。

+0

RegisterAttachedを実行したときにメタデータに継承オプションを追加しましたか? http://msdn.microsoft.com/en-us/library/ms753197.aspx –

答えて

1

イムは、添付プロパティは、論理ツリーを下にpropogateないことを確認していますが、このような何かを試みることができる:

<Panel a:ToggleSwitch="Binding Path=(a:ToggleSwitch), 
      RelativeSource={RelativeSource Mode=FindAncestor, 
      AncestorType={x:Type Panel}}" /> 
+2

これははるかにコストパフォーマンスに優れています。 –

16

これはProperty Value Inheritance上のドキュメントによると、正常に動作する必要があります。プロパティを登録するための呼び出しが次のようになっていることを確認してください:フラグFrameworkPropertyMetadataのドキュメント(およびFrameworkPropertyMetadataOptions - 必要に応じてOverridesInheritanceBehaviorを使用できます)も参照してください。

+3

文書のみに従っているものが常にある場合。はい、FrameworkPropertyMetadataOptions.InheritsはDPで設定されています。しかし、まだ期待どおりに動作しません。 – giri