自适应触发器在 Windows 10 UWP 中不起作用

Adaptive Trigger Not Working in Windows 10 UWP

当 minWindowWidth>=0 时,我创建了一个具有三个设置器的自适应触发器。但它不起作用。我在这里调查了一个类似的问题,但在那种情况下,自适应触发器在网格之外。即使自适应触发器在网格中,它也不起作用。我附上了 implementation.The 网格最初设置为折叠但一旦满足自定义条件就会设置为可见。

<Grid x:Name="loginGrid" Visibility="Collapsed" Margin="12,0,12,0">
    <!--Adaptive trigger for setting grid width and height-->
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup>
            <VisualState>
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="9"/>
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="titl.Text" Value="Test"/>
                    <Setter Target="Login.Content" Value="Test"/>
                    <Setter Target="loginGrid.Margin" Value="12,500,12,500"/>
                </VisualState.Setters>
            </VisualState>
         </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>


    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="auto"/>
        <RowDefinition Height=".25*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="7*" />
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
    <TextBlock x:Name="titl" Grid.Row="0" Grid.Column="0" TextAlignment="Center" FontSize="{StaticResource PivotHeaderItemFontSize}" Grid.ColumnSpan="2"/>
    <TextBlock Text="Register No" Padding="10,10,10,10" FontSize="{StaticResource SearchBoxContentThemeFontSize}" Grid.Row="1" Grid.Column="0" TextAlignment="Center"/>
    <TextBox x:Name="regNo" TextWrapping="Wrap" Text="" FontSize="{StaticResource SearchBoxContentThemeFontSize}" Grid.Row="1" Grid.Column="1" InputScope="Number"/>
    <Button x:Name="Login" Content="Login" Click="Login_Click" Background="{ThemeResource AppBarBackgroundThemeBrush}" FontSize="{StaticResource SearchBoxContentThemeFontSize}" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>

关于自适应触发器,我没有发现您的代码有任何问题。

该错误更多是边距错误和行高错误。您正在使用 500px top/bottom 边距,因此您需要有一个高度超过 1000px 的屏幕才能看到一些东西。 您还误用了行高的星号。一颗星表示可用 space 的一小部分。

例如:

<RowDefinition Height="*" />
<RowDefinition Height="*"/>
<RowDefinition Height="8*" />

表示第一行将占用网格可用 space 的 10%,第二行也是 10%,最新的 80%。 但是,如果可用的 space 是 0px,所有行的高度都是 0px。

如果您将 top/bottom 边距设置为较小的值,并让具有固定高度内容(如文本、按钮等)的行采用它们需要的 space(将高度设置为 auto), 它会起作用。

    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
        <RowDefinition Height="auto"/>
        <RowDefinition Height=".25*"/>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="7*" />
    </Grid.RowDefinitions>

我已将第一行和第四行的高度更改为自动,这样无论显示大小如何,内容都会始终显示。

关于 AdaptiveTrigger,请不要忘记 UWP 应用程序的最小 window 大小为 320 像素,因此将最小宽度设置为 9px 将导致触发器始终处于活动状态。