2012-12-23 86 views
3

我有一個問題。當我點擊一個ListBoxItem(來自XAML而不是CS)時,如何啓動一個在資源中創建的故事板?從ListBoxItem訪問故事板(資源)

我使用「ListBoxItemStyle1」中的EventTrigger進行了測試,但無法訪問故事板,找不到。

這是我的代碼:

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="WpfApplication1.MainWindow" 
x:Name="Window" 
Title="MainWindow" 
Width="640" Height="480"> 
<Window.Resources> 
    <Style x:Key="ListBoxItemStyle1" TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
     <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
     <Setter Property="Padding" Value="2,0,0,0"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <EventTrigger RoutedEvent="Selected"> 
          <BeginStoryboard> 
           <!--?????????????????????????????????????????????--> 
          </BeginStoryboard> 
         </EventTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Storyboard x:Key="MyStoryBoard"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="rectangle"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="164"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="rectangle"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="-1"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</Window.Resources> 

<Grid x:Name="LayoutRoot"> 
    <ListBox HorizontalAlignment="Left" Height="56" Margin="59,39,0,0" VerticalAlignment="Top" Width="147" ItemContainerStyle="{DynamicResource ListBoxItemStyle1}"/> 
    <Rectangle x:Name="rectangle" Fill="Red" HorizontalAlignment="Left" Height="87" Margin="59,130,0,0" Stroke="Black" VerticalAlignment="Top" Width="147" RenderTransformOrigin="0.5,0.5"> 
     <Rectangle.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform/> 
       <SkewTransform/> 
       <RotateTransform/> 
       <TranslateTransform/> 
      </TransformGroup> 
     </Rectangle.RenderTransform> 
    </Rectangle> 
</Grid> 

回答

0
,如果你想調用的事件情節串連圖板

使它成爲一個資源並使用StaticResource的調用它。 考慮到所有的資源都在App.xaml中

定義
<Application.Resources> 
    <Storyboard x:Key="MyStoryboard"> 
     .... 
    </Storyboard> 
</Application.Resources> 

然後從選定的事件調用它。

... 

<EventTrigger RoutedEvent="Selected"> 
<BeginStoryboard Storyboard="{StaticResource MyStoryboard}" 
x:Name="begin_MyStoryboard"/> 
</EventTrigger> 

希望幫助它