Раскадровка TargetName WPF - PullRequest
       4

Раскадровка TargetName WPF

0 голосов
/ 06 февраля 2012

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

Как я могу ссылаться на этот элемент "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>

1 Ответ

3 голосов
/ 06 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...