UWP 使用 VisualStateManager 将 Grid.HorizontalAlignment 更改为 stretch/left

UWP Change Grid.HorizontalAlignment to stretch/left using VisualStateManager

我无法让视觉状态管理器正确更改应用程序主网格的 HorizontalAlignment/VerticleAlignment。

对于将在 phone 上使用的屏幕尺寸,我希望 Horizo​​ntalAlignment/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" />

我有一些技巧 无需编写一行代码即可创建视觉状态设置器。