如何通过挂钩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状态的失败尝试。如果有办法在PanelHeaderItem的VisualStateManager.VisualStateGroups
内定位TextBlock,那也可以,但我不知道如何。
理想情况下寻找纯XAML方法(无C#)。
答案 0 :(得分:0)
要更改Textblock的属性,您可以在绑定中使用RelativeSource。 users
在此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
VisualState