Визуальное состояние не срабатывает при уменьшении окна

У меня есть 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>

person Vladislav    schedule 22.09.2020    source источник


Ответы (1)


Визуальное состояние не срабатывает при уменьшении окна

Проблема в том, что вы поместили три 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>
person Nico Zhu - MSFT    schedule 22.09.2020
comment
Ты самый лучший! - person Vladislav; 22.09.2020