我的視圖元素(作爲目標的PerspectiveCamera)和作爲源的一個Transform3DGroup allTransform {get; set;}
常規.Net屬性之間的數據綁定已經正常工作(WPF,C#,Net4.5)我的視角模型。我需要知道爲什麼/如何實際工作。在WPF中綁定到Transform3dGroup
Transform3DGroup在其子列表中有一個TranslateTransform3D對象。我改變這個TranslateTransform的污損特性我視圖模型中:
// create my transform group
this.allTransforms = new Transform3DGroup();
this.translateToPos = new TranslateTransform3D();
allTransforms.Children.Add(translateToPos);
...
// updating the translation while rendering is done like this.
// X, Y, Z are just some properties of this class
this.translateToPos.OffsetX = this.X;
this.translateToPos.OffsetY = this.Y;
this.translateToPos.OffsetZ = this.Z;
所以綁定到該變換組照相機實際反應正常(含翻譯)。在我對數據綁定的理解中,DependencyProperty能夠通知任何更改的綁定屬性,但是我的Transform3DGroup不是DependencyProperty,所以它是如何工作的? Transform3DGroup的子集合是DependencyProperty,但我不是更改集合,但只更新它的一個成員。 TranslateTransform3D中的OffsetX,OffsetY,OffsetZ屬性實際上是DependencyProperty。那麼他們的變更通知如何傳播到擁有TransformGroup3D?
THX解釋:這是密切相關的我的前一個問題http://stackoverflow.com/questions/24329448/xaml-databinding-to-regular-property但現在我看到細節。 – Michbeckable
詳細地說,它實際上是基於Freezable類的。 Transform3D從Freezable派生而來,它本身是從DependencyObject派生的,但改變了默認的通知行爲。當子屬性發生更改時,可凍結對象始終發送更改通知。因此,如果Transform3D的實際Matrix3D發生更改,則該更改會傳播到層次結構中,並且最高級別的Freezable會將最後一個更改通知發送給與其綁定的所有人。 – Michbeckable