2015-04-19 55 views
0

我需要不同類型的在一個單一的風格各EventTrigger變換,只使用一個值的RenderTransform屬性正常工作是這樣的:不同的變換在一個單一的風格在WPF

<Setter Property="RenderTransform"> 
    <Setter.Value> 
     <ScaleTransform ScaleX="1" ScaleY="1"/> 
    </Setter.Value> 
</Setter> 

但是,當我嘗試這樣做:

<Setter Property="RenderTransform"> 
    <Setter.Value> 
     <TransformGroup> 
      <ScaleTransform ScaleX="1" ScaleY="1"/> 
      <TranslateTransform X="0" Y="0"/> 
     </TransformGroup> 
    </Setter.Value> 
</Setter> 

我甚至無法存取權限在TargetProperty一個單一的財產,全作風它是由像這樣:

<Style TargetType="k:KinectTileButton" x:Key="BotonTutorial"> 
     <Setter Property="Background" Value="White"/> 
     <Setter Property="BorderThickness" Value="6"/> 
     <Setter Property="ToolTip" Value="Empuja para seleccionar"/> 
     <Setter Property="Height" Value="400"/> 
     <Setter Property="Width" Value="250"/> 
     <Setter Property="FontSize" Value="18"/> 
     <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/> 
     <Setter Property="RenderTransform"> 
      <Setter.Value> 
       <TransformGroup> 
        <ScaleTransform ScaleX="1" ScaleY="1"/> 
        <TranslateTransform X="0" Y="0"/> 
       </TransformGroup> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="k:KinectTileButton.Loaded"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="(k:KinectTileButton.RenderTransform).(TranslateTransform.Y)" From="-50" To="0" Duration="0:0:1"> 
           <DoubleAnimation.EasingFunction> 
            <CircleEase EasingMode="EaseOut"/> 
           </DoubleAnimation.EasingFunction> 
          </DoubleAnimation> 
          <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
      <!--More events--> 
      <EventTrigger RoutedEvent="k:KinectTileButton.MouseEnter"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimation Storyboard.TargetProperty="(k:KinectTileButton.Background).(SolidColorBrush.Color)" To="White" Duration="0:0:0.1" FillBehavior="HoldEnd"/> 
          <DoubleAnimation Storyboard.TargetProperty="(k:KinectTileButton.RenderTransform).(ScaleTransform.ScaleX)" From="1" To="1.3" Duration="0:0:0.5" FillBehavior="HoldEnd"> 
           <DoubleAnimation.EasingFunction> 
            <CubicEase EasingMode="EaseOut"/> 
           </DoubleAnimation.EasingFunction> 
          </DoubleAnimation> 
          <DoubleAnimation Storyboard.TargetProperty="(k:KinectTileButton.RenderTransform).(ScaleTransform.ScaleY)" From="1" To="1.3" Duration="0:0:0.5" FillBehavior="HoldEnd"> 
           <DoubleAnimation.EasingFunction> 
            <CubicEase EasingMode="EaseOut"/> 
           </DoubleAnimation.EasingFunction> 
          </DoubleAnimation> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
      <!--End of the style--> 

沒有TransformGroup我只能使用一個值或轉換,因此只有一個觸發器可以工作,我知道在添加按鈕時添加這個值會更容易,但是這將會用於很多按鈕。

回答

0

動畫的TargetProperty值應參考Children收集的TransformGroup的,而且應該是沒有名字的前綴像k:KinectTileButton

<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX" ...> 
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY" ...> 
... 
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[1].Y" ...> 
+0

感謝隊友,它的正常工作 –

相關問題