动画边距/厚度

时间:2011-09-03 10:21:16

标签: wpf windows-phone-7 code-behind storyboard thickness

我只是觉得我已经知道WPF和XAML语法如何工作.... wrooong。

我收到了消息:

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

请问,你知道为什么这种语法错了吗?

我需要将单个值用作double。它稍后会在代码隐藏中使用故事板。

此致 Error Screenshot

我只想用位置和大小的故事板为红色矩形设置动画。也许XAML无论如何都是正确的解决方案? Red rectangle

2 个答案:

答案 0 :(得分:17)

要为厚度设置动画,请使用这样的故事板(来自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。

无论哪种方式,您所获得的错误并非来自您提供的一小段代码,如果您想要解决此问题,请提供更多代码。

编辑:由于厚度动画似乎在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>

答案 1 :(得分:0)

我认为这与您在XAML中的其他地方使用MyRectangleMargin或代码隐藏有关。请记住,Thickness是一个结构而不是一个类,所以你不能在任何需要类实例的地方使用它。