我无法Visibility通过VisualStateManagercustom更改属性StateTrigger。尝试了不同的选择。
这是我自己UserControl:
<DataTemplate x:Key="TemplateA">
<UserControl>
<StackPanel Padding="5,0,0,5"
x:Name="StackA"
Orientation="Vertical"
Margin="10">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="NowState">
<VisualState x:Name="Now">
<VisualState.StateTriggers>
<triggers:BooleanDataTrigger
triggers:BooleanDataTrigger.TriggerValue="True"
triggers:BooleanDataTrigger.DataValue="{Binding IsRec}"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StackA.Background" Value="{StaticResource SystemControlHighlightListLowBrush}"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="NotNow">
<VisualState.StateTriggers>
<triggers:BooleanDataTrigger
triggers:BooleanDataTrigger.TriggerValue="False"
triggers:BooleanDataTrigger.DataValue="{Binding IsRec}"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StackA.Background" Value="Transparent"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<TextBlock x:Name="StatusText"
Text="Now watching:"
Style="{StaticResource BaseTitleStyle}"
HorizontalTextAlignment="Center"/>
<TextBlock Text="{Binding FirstTitle}"
TextTrimming="CharacterEllipsis"
HorizontalTextAlignment="Center"
Style="{StaticResource TitleStyle}"/>
</StackPanel>
</UserControl>
</DataTemplate>
属性Background毫无疑问地发生变化。
的第一个选项Visibility也可以通过Setter任何值的文本看到IsRec:
<Setter Target="StatusText.Visibility" Value="Collapsed"/>
通过Storyboard相同的第二个选项:
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="StatusText" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
目前它是通过转换器完成的,但我想知道为什么不能通过VisualStateManager.
寻找的人总会找到。
SOen上的这个答案有所帮助。
TextBlock必须用初始值初始化Visibility。在这种情况下,它是Collapsed。没有这个就行不通。接下来,我
Setter在VisualState: