Анимированная маржа / толщина - PullRequest
8 голосов
/ 03 сентября 2011

Я просто подумал, что уже знаю, как работает синтаксис WPF и XAML .... wrooong.

Я получил сообщение:

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

Пожалуйста, знаете, почему этот синтаксис неправильный?

Мне нужно использовать одно значение как двойное. Позже он работает с раскадровкой в ​​codebehind.

С уважением Error Screenshot

Я просто хочу анимировать красный прямоугольник с раскадровкой по расположению и размеру. Возможно, XAML - это правильное решение? Red rectangle

Ответы [ 2 ]

18 голосов
/ 03 сентября 2011

Чтобы анимировать толщину, используйте раскадровку, подобную этой (из примера 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 голосов
/ 03 сентября 2011

Я думаю, что это связано с тем, что вы делаете с MyRectangleMargin в другом месте XAML или с выделенным кодом.Помните, Thickness - это структура, а не класс, поэтому вы не сможете использовать ее в любом месте, где ожидается экземпляр класса.

...