自适应触发器在 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 将导致触发器始终处于活动状态。
当 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 将导致触发器始终处于活动状态。