UWP 使用 VisualStateManager 将 Grid.HorizontalAlignment 更改为 stretch/left
UWP Change Grid.HorizontalAlignment to stretch/left using VisualStateManager
我无法让视觉状态管理器正确更改应用程序主网格的 HorizontalAlignment/VerticleAlignment。
对于将在 phone 上使用的屏幕尺寸,我希望 HorizontalAlignment/VerticleAlignment 拉伸,Height/Width 设置为自动。
对于桌面版,它应该是 Left/Top,Height/Width 设置为特定大小。无论出于何种原因,当我试图弄乱对齐时,它表现得很古怪并且没有做我想做的事
这是我尝试过的示例:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="PhoneView">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Grid.HorizontalAlignment" Value="Stretch"/>
<Setter Target="Grid.VerticleAlignment" Value="Stretch"/>
<Setter Target="Grid.Height" Value="Auto"/>
<Setter Target="Grid.Width" Value="Auto"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="DesktopSmall">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1920"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Grid.HorizontalAlignment" Value="Left"/>
<Setter Target="Grid.VerticleAlignment" Value="Top"/>
<Setter Target="Grid.Height" Value="1280"/>
<Setter Target="Grid.Width" Value="1920"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
另一个问题是当我尝试将最大分辨率设置为 1920x1280 时,如果我手动设置网格的 height/width,Windows 任务栏(OS 任务栏,而不是应用程序 app bar/command bar) 切断了我的应用程序的一部分。我不想将对齐设置为拉伸,因为我试图限制视图的实时拉伸。
谢谢!如果需要更多详细信息,请告诉我。
应该这样写-
<Setter Target="Container.(Grid.HorizontalAlignment)" Value="Left" />
<Setter Target="Container.(Grid.VerticalAlignment)" Value="Top" />
我有一些技巧 无需编写一行代码即可创建视觉状态设置器。
我无法让视觉状态管理器正确更改应用程序主网格的 HorizontalAlignment/VerticleAlignment。
对于将在 phone 上使用的屏幕尺寸,我希望 HorizontalAlignment/VerticleAlignment 拉伸,Height/Width 设置为自动。
对于桌面版,它应该是 Left/Top,Height/Width 设置为特定大小。无论出于何种原因,当我试图弄乱对齐时,它表现得很古怪并且没有做我想做的事
这是我尝试过的示例:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="PhoneView">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Grid.HorizontalAlignment" Value="Stretch"/>
<Setter Target="Grid.VerticleAlignment" Value="Stretch"/>
<Setter Target="Grid.Height" Value="Auto"/>
<Setter Target="Grid.Width" Value="Auto"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="DesktopSmall">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1920"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="Grid.HorizontalAlignment" Value="Left"/>
<Setter Target="Grid.VerticleAlignment" Value="Top"/>
<Setter Target="Grid.Height" Value="1280"/>
<Setter Target="Grid.Width" Value="1920"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
另一个问题是当我尝试将最大分辨率设置为 1920x1280 时,如果我手动设置网格的 height/width,Windows 任务栏(OS 任务栏,而不是应用程序 app bar/command bar) 切断了我的应用程序的一部分。我不想将对齐设置为拉伸,因为我试图限制视图的实时拉伸。
谢谢!如果需要更多详细信息,请告诉我。
应该这样写-
<Setter Target="Container.(Grid.HorizontalAlignment)" Value="Left" />
<Setter Target="Container.(Grid.VerticalAlignment)" Value="Top" />
我有一些技巧