2014-07-18 64 views
0

我在我的視圖中有一個圖像,當特殊事件發生時,我想將圖像旋轉45度。不過,我不斷收到此錯誤所有的時間:rendertransform wpf /代碼落後

無法解析的屬性路徑的所有屬性引用 「RenderTransform.Angle」

什麼類型的屬性路徑的,我需要設置做到這一點?

var dbAscending = new DoubleAnimation(0, 45, new Duration(TimeSpan.FromMilliseconds(1000))); 
var storyboard = new Storyboard(); 
storyboard.Children.Add(dbAscending); 
Storyboard.SetTarget(dbAscending, uc.Cross); 
Storyboard.SetTargetProperty(dbAscending, new PropertyPath("RenderTransform.Angle")); 
storyboard.Begin(); 

回答

2

你將不得不一個RotateTransform分配給您的圖片的的RenderTransform讓你的故事板工作,例如像這樣:

<Image RenderTransformOrigin="0.5,0.5" ...> 
    <Image.RenderTransform> 
     <RotateTransform x:Name="imageRotation"/> 
    </Image.RenderTransform> 
</Image> 

雖然你可以用你的故事板動畫這一點,它可能更容易只是直接啓動動畫RotateTransform對象:

var rotationAnimation = new DoubleAnimation(45, TimeSpan.FromSeconds(1)); 
imageRotation.BeginAnimation(RotateTransform.AngleProperty, rotationAnimation); 
2

RenderTransform沒有Angle屬性。確保分配給正在旋轉的元素的RenderTranformation屬性的RotationTransformation。

new PropertyPath("(UIElement.RenderTransform).(RotateTransform.Angle)" 

如果添加了輪換到的TransformGroup中的PropertyPath會(假設旋轉是該組的第一個孩子):

new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)" 
+0

雖然'RenderTransform.Angle'是一個有效的財產路徑,只要RenderTransform確實包含RotateTransform。 – Clemens

+0

@Clemens - 是的,我爲這種情況添加了PropertyPath,以顯示問題中的屬性路徑比您預期的要複雜。這是正確的,但如果控件具有RenderTransform集合,它將工作。 –

+0

我認爲你的意思是'TransformGroup' by * TransformationGroup *。 –