缩小窗口时不触发视觉状态

问题描述

我有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>