2016-02-11 2 views
1

Учитывая следующее:Как настроить индивидуальные компоненты Преобразование вращения?

<Viewbox> 
    <Foo:Bar 
     x:FieldModifier="private" 
     x:Name="fooBar" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     RenderTransformOrigin="0.5,0.5"> 
     <Foo:Bar.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform 
        x:FieldModifier="private" 
        x:Name="xfScale"/> 
       <RotateTransform 
        x:FieldModifier="private" 
        x:Name="xfRotate"/> 
      </TransformGroup> 
     </Foo:Bar.RenderTransform> 
     <Foo:Bar.Style> 
      <Style TargetType="{x:Type Foo:Bar}"> 
       <Style.Triggers> 
        <DataTrigger 
         Binding="{ 
          Binding Flip, 
          RelativeSource={ 
           RelativeSource AncestorType={ 
            x:Type local:myFooBar}}}" 
         Value="True"> 
         <DataTrigger.EnterActions> 
          <BeginStoryboard> 
           <Storyboard> 
            <DoubleAnimation 
             Storyboard.TargetProperty=""/> 
           </Storyboard> 
          </BeginStoryboard> 
         </DataTrigger.EnterActions> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Foo:Bar.Style> 
    </Foo:Bar> 
</Viewbox> 

Что нового компонента, который является в основном фантазии этикетки застрял внутри ViewBox (для автоматического масштабирования на этикетке), что мне нужно сделать, чтобы указать Storyboard.TargetProperty на быть способный анимировать, скажем, RotateTransformAngle недвижимость?

ответ

1

Ваш TargetName должен быть установлен для вашего xfScale/xfRotate с именем, который преобразуется с уважением.

Ваш TargetProperty будет свойствами используемых преобразований.

Как для шкалы;

Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"

и

Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"

За исключением, что указывает только свойство, вы должны предоставить Value анимировать в. Таким образом, в целом, это станет чем-то вроде;

<DoubleAnimationUsingKeyFrames Storyboard.TargetName="xfScale" 
           Storyboard.TargetProperty="X"> 
    <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="0" /> 
</DoubleAnimationUsingKeyFrames> 

Или Rotate вам нужен Angle собственности. Стоит отметить, что Blend делает этот материал намного быстрее/проще, чем вручную, особенно для сложных анимаций.

Надеюсь, это поможет, ура.

+0

В попытке вашего предложения я получаю следующее исключение во время компиляции: 'Ошибка \t \t Имя_целевого_объекта свойство не может быть установлено на стиль Setter.' – Will

+0

Кроме того - я дам этому выстрел в смеси; Спасибо за совет. – Will

+1

Ой, да, вы могли бы ожидать этого. Вам не нужен стиль в этом примере, примените DataTrigger непосредственно к «Foo: Bar» как к Interaction.Trigger, а не как к Style.Trigger, или поскольку это WPF, вы должны иметь возможность просто делать Foo: Bar .Triggers –

Смежные вопросы