【问题标题】:UWP Change Grid.HorizontalAlignment to stretch/left using VisualStateManagerUWP 使用 VisualStateManager 将 Grid.Horizo​​ntalAlignment 更改为拉伸/向左
【发布时间】:2017-12-04 12:26:16
【问题描述】:

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

对于将在手机上使用的屏幕尺寸,我希望将 Horizo​​ntalAlignment/VerticleAlignment 拉伸,并将 Height/Width 设置为 Auto。

对于桌面,它应该是左/上,高度/宽度设置为特定大小。无论出于何种原因,当我试图弄乱对齐方式时,它的行为很古怪并且没有做我想做的事

这是我尝试过的一个示例:

  <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 时,如果我手动设置网格的高度/宽度,Windows 任务栏(操作系统任务栏,而不是应用程序栏/命令栏)会截断部分我的应用程序。我不想将对齐设置为拉伸,因为我试图限制视图的实时拉伸。

谢谢!如果需要更多详细信息,请告诉我。

【问题讨论】:

  • Grid 是您的Grid 的名字吗?如果是,则将其更改为其他名称。如果不是,则使用Grid 名称而不是Grid
  • Grid 不是我的网格的名称。我一直在使用“Container”,例如 Container.Horizo​​ntalAlignment。
  • 我只在这个例子中使用了网格作为占位符,所以很明显这是我使用的网格。

标签: xaml uwp uwp-xaml visualstatemanager adaptive-trigger


【解决方案1】:

应该是这样写的-

<Setter Target="Container.(Grid.HorizontalAlignment)" Value="Left" />
<Setter Target="Container.(Grid.VerticalAlignment)" Value="Top" />

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

【讨论】:

  • 我会试试的,谢谢。我现在记得嵌套有时真的很奇怪。您是否知道为什么将 visualstatemanager 放置在 Pivot DataTemplate 中时视觉状态不起作用?我已经用列表视图完成了它,没有问题,但它在枢轴上表现得很时髦。
  • 您需要将数据模板中的内容封装在 UserControl 中。请看我的回答here
  • 好的,所以我按照您的建议进行了尝试,最初它引发了异常。我尝试了你的第二种方法,它似乎有效。它自动编写的代码是:&lt;Setter Target="Container.FrameworkElement.HorizontalAlignment)" Value="Left"/&gt;
  • 我也试试UserControl,谢谢你的建议!
  • 同意,很可能是一个错误。如果我找到一个明确的解决方法,我一定会更新这个线程。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2018-01-19
  • 1970-01-01
  • 2020-01-25
相关资源
最近更新 更多