2013-10-26 2 views
3

У меня есть ListBox с индивидуальным стилем. Я хочу, чтобы элемент немного увеличился, когда он был выбран, и верните его в исходный размер, когда его не выбрали. Я пробовал несколько решений, но ни один из них не работал. Я думаю, что проблема заключается в правильной настройке Storyboard.TargetProperty.ListBoxItem в WPF - анимация масштаба при выборе

Мой текущий XAML выглядит следующим образом:

... 
<ListBox.Resources>     
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Trigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.(ScaleTransform.ScaleX)" To="1.2" Duration="0:0:.3" AutoReverse="True"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.EnterActions> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</ListBox.Resources> 
... 

Мой окончательный код (с ответами прилагается):

... 
<ListBox.Resources>     
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="RenderTransformOrigin" Value="0.5,0.5" /> 
     <Setter Property="RenderTransform"> 
      <Setter.Value> 
       <ScaleTransform /> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Trigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1.1" Duration="0:0:.1" /> 
          <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" To="1.1" Duration="0:0:.1" /> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.EnterActions> 
       <Trigger.ExitActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" To="1.0" Duration="0:0:.1" /> 
          <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" To="1.0" Duration="0:0:.1" /> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.ExitActions> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</ListBox.Resources> 
... 

ответ

3

Попробуйте использовать следующий код:

... 
<ListBox.Resources> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="LayoutTransform"> 
      <Setter.Value> 
       <ScaleTransform x:Name="scaleTransform" /> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Trigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleX" To="1.2" Duration="0:0:.3" AutoReverse="True"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.EnterActions> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</ListBox.Resources> 
... 
+0

Спасибо! Вы случайно не знаете, как сделать его масштаб вокруг центра предмета? Установка '' не работает. – PiotrK

+1

Используйте 'RenderTransform' вместо' LayoutTransform' и установите 'RenderTransformOrigin' в' 0.5,0.5'. –

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