如何设置Pivot的HeaderTemplate的状态?

时间:2016-04-20 19:24:32

标签: win-universal-app uwp-xaml

如何通过挂钩PanelHeaderItem template使用的相同状态来更改TextBlock的可视状态?

代码示例:

<Pivot>
    <Pivot.HeaderTemplate>
        <DataTemplate>
            <Grid>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="SelectionStates">
                        <VisualState x:Name="Selected">
                            <Storyboard>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Opacity" >
                                    <DiscreteObjectKeyFrame KeyTime="0" Value="1" />
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>

                <TextBlock x:Key="Text" Text="{Binding}" Opacity="0.5" />
            </Grid>
        </DataTemplate>
    </Pivot.HeaderTemplate>
</Pivot>

VisualStateManager.VisualStateGroups标记是我尝试使用PanelHeaderItem template中使用的相同VisualStates更改TextBlock状态的失败尝试。如果有办法在PanelHeaderItemVisualStateManager.VisualStateGroups内定位TextBlock,那也可以,但我不知道如何。

理想情况下寻找纯XAML方法(无C#)。

1 个答案:

答案 0 :(得分:0)

要更改Textblock的属性,您可以在绑定中使用RelativeSourceusers在此Binding中,我将ContentPresenter Opacity绑定到Textblock Opacity。

<TextBlock Text="{Binding Header}" Opacity="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Opacity}"/>

在PivotHeader的以下样式中,我在<Pivot> <Pivot.HeaderTemplate> <DataTemplate> <Grid> <TextBlock Text="{Binding Header}" Opacity="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Opacity}"/> </Grid> </DataTemplate> </Pivot.HeaderTemplate> .... </Pivot> Selected

中将不透明度更改为1并将Forground更改为红色
VisualState