问题描述
我有3种视觉状态,带有自适应触发。当窗户增加时,它们发射良好。但是,如果窗口从最大状态减小到较小状态,则设置器将无法工作,并且元素会重置它们的样式,使其像没有视觉状态时一样淡化。
<Grid x:Name="mainGrid" Style="{StaticResource mainGridStyle}">
<visualstatemanager.VisualStateGroups>
<VisualStateGroup x:Name="largeSize">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1520"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="mainGrid.Background" Value="{StaticResource lgBrush}"/>
<Setter Target="logoImage.Style" Value="{StaticResource lglogoStyle}"/>
<Setter Target="TxbClienForStreaming.FontSize" Value="60"/>
<Setter Target="TxbAddText.FontSize" Value="42"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="mediumSize">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="mainGrid.Background" Value="{StaticResource mdBrush}"/>
<Setter Target="logoImage.Style" Value="{StaticResource mdlogoStyle}"/>
<Setter Target="TxbClienForStreaming.FontSize" Value="45"/>
<Setter Target="TxbAddText.FontSize" Value="28"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="smallSize">
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="mainGrid.Background" Value="{StaticResource smBrush}"/>
<Setter Target="TxbClienForStreaming.FontSize" Value="36"/>
<Setter Target="TxbAddText.FontSize" Value="24"/>
<Setter Target="BtnGetNow.FontSize" Value="34"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</visualstatemanager.VisualStateGroups>
解决方法
缩小窗口时不触发视觉状态
问题是您将三个VisualState
放在了不同的组中,请像下面那样将三个VisualState
集成到一个组中。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="smallSize">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="mainGrid.Background" Value="Red" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="mediumSize">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="665" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="mainGrid.Background" Value="Green" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="largeSize">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1520" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="mainGrid.Background" Value="Blue" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>