2011-09-03 78 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