2011-09-03 74 views
7

我只是覺得我已經知道WPF和XAML語法是如何工作的...... wrooong。動畫保證金/厚度

我得到的消息:

'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints. 

請,你知道爲什麼這個語法有錯嗎?

我需要使用單值作爲double。它稍後在代碼隱藏中使用故事板。

問候 Error Screenshot

我只想動畫紅色矩形的位置和大小故事板。也許XAML無論如何都是正確的解決方案? Red rectangle

+0

這是值得保留在WP7使用Silverlight的,其中有一些(HTTP [使用WPF細微的差別]記:// msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx)。 –

回答

15

要動畫厚度,使用這樣的故事板(從MSDN示例):

<BeginStoryboard> 
    <Storyboard>  
     <!-- BorderThickness animates from left=1, right=1, top=1, and bottom=1 to 
     left=28, right=28, top=14, and bottom=14 over one second. --> 
     <ThicknessAnimation 
     Storyboard.TargetProperty="BorderThickness" 
     Duration="0:0:1.5" FillBehavior="HoldEnd" From="1,1,1,1" To="28,14,28,14" /> 
    </Storyboard> 
    </BeginStoryboard> 

實際上,動態顯示取值爲 「W,X,Y,Z」 的任何財產您使用ThicknessAnimation

在我看來,你想要做的是將紅色的矩形移動到右邊。

在這種情況下,將整個事情放在Canvas中,並在紅色矩形的位置上使用DoubleAnimation。

無論哪種方式,你得到的錯誤不是來自你提供的一小段代碼,如果你想要的話,請提供更多的代碼。

編輯:自ThicknessAnimation似乎是WP7不可用,試試這個來代替:

<BeginStoryboard> 
    <Storyboard>  
     <DoubleAnimation 
     Storyboard.TargetProperty="BorderThickness.Top" 
     Duration="0:0:1.5" To="15" /> 
     <DoubleAnimation 
     Storyboard.TargetProperty="BorderThickness.Left" 
     Duration="0:0:1.5" To="25" /> 
    </Storyboard> 
    </BeginStoryboard> 
+0

請參閱我編輯的答案。 –

0

我認爲這與您在使用XAML或代碼隱藏中其他位置的MyRectangleMargin時所做的操作有關。請記住,厚度是一個結構而不是類,所以你不能在需要類實例的任何地方使用它。

+0

我在問題中添加了評論。我想動畫紅色矩形。也許你是對的。但如何解決它? – Nasenbaer