2012-02-06 4 views
0

У меня есть пользовательский TabControl с пользовательским DependencyProperty с именем SelectionChanging. Ну, я хочу получить доступ к TabItem, чтобы оживить его, но я не знаю, как получить к нему доступ. Этот код выдает сообщение об исключении, которое не может найти «tabItem»Storyboard TargetName WPF

Как я могу ссылаться на этот элемент «tabItem» из EventTrigger?

<DataTemplate x:Key="WorkSpaceTemplate"> 
    <aero:SystemDropShadowChrome> 
     <controls:PinardTabControl IsSynchronizedWithCurrentItem="True" 
        Margin="0" 
        Padding="0" 
        BorderThickness="2" 
        BorderBrush="{StaticResource WorkspaceBorderBrush}" 
        Background="{StaticResource WorkspaceBackgroundBrush}" 
        ItemsSource="{Binding}" SnapsToDevicePixels="True"> 
      <controls:PinardTabControl.Resources> 
       <Style TargetType="{x:Type TabItem}"> 
        <Setter Property="Template" Value="{StaticResource ClosableTabItemTemplate}" /> 
       </Style> 
      </controls:PinardTabControl.Resources> 
      <controls:PinardTabControl.Template> 
       <ControlTemplate TargetType="{x:Type TabControl}"> 
        **<Grid x:Name="tabItem"** 
         ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto"/> 
          <RowDefinition Height="*"/> 
         </Grid.RowDefinitions> 
         <TabPanel x:Name="HeaderPanel" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/> 
         <Border x:Name="ContentPanel" CornerRadius="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local"> 
          <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
         </Border> 
        </Grid> 
       </ControlTemplate> 

      </controls:PinardTabControl.Template> 
      <controls:PinardTabControl.Triggers> 
       <EventTrigger RoutedEvent="controls:PinardTabControl.SelectionChanging"> 
        <BeginStoryboard> 
         <Storyboard Name="FormFade"> 
          <DoubleAnimation Name="FormFadeAnimation" 
             **Storyboard.TargetName="tabItem"** 
             Storyboard.TargetProperty="(UIElement.Opacity)" 
             From="0.0" To="1.0" Duration="0:0:0.25" 
             AutoReverse="False" RepeatBehavior="1x" 
            /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </controls:PinardTabControl.Triggers> 
     </controls:PinardTabControl> 
    </aero:SystemDropShadowChrome> 
</DataTemplate> 

ответ

3

Элементы внутри шаблонов имеют разный объем, вы не можете получить к ним доступ извне. Возможно, вы могли бы попытаться переместить части анимации в шаблон (ControlTemplate.Triggers).

+0

Ok H.B., тогда я попробую. Спасибо! –

+0

Добро пожаловать, рад, что это (предположительно) помогло :) –

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