C# Windows 10 UWP中的可视状态管理器在页面加载时未应用初始状态

C# Windows 10 UWP中的可视状态管理器在页面加载时未应用初始状态,c#,xaml,win-universal-app,uwp,C#,Xaml,Win Universal App,Uwp,我有一个带有相对面板的页面,可以根据宽度重新组织。但是,除非宽度>720px,否则它似乎不会在加载时应用任何状态。如果在加载页面后调整页面大小,这两种状态都有效 解决方法是检查加载页面上的窗口大小并手动选择状态,但我相信这应该自动处理?我有其他的页面可以使用,我不确定我在做什么不同。这是我的代码的简化版本,我将其设置为红色/蓝色背景,这样我就可以知道是否/正在应用哪个状态 更新 我已经更新了代码以显示丢失的ZonesWrapGrid,它似乎确实相关。当我调整页面大小时,视觉状态确实起

我有一个带有相对面板的页面,可以根据宽度重新组织。但是,除非宽度>720px,否则它似乎不会在加载时应用任何状态。如果在加载页面后调整页面大小,这两种状态都有效

解决方法是检查加载页面上的窗口大小并手动选择状态,但我相信这应该自动处理?我有其他的页面可以使用,我不确定我在做什么不同。这是我的代码的简化版本,我将其设置为红色/蓝色背景,这样我就可以知道是否/正在应用哪个状态


  • 更新
我已经更新了代码以显示丢失的ZonesWrapGrid,它似乎确实相关。当我调整页面大小时,视觉状态确实起作用,它将切换ZonesWrapGrid方向,只是加载时未设置任何状态


但是,如果我从可视状态管理器中删除ZonesWrapGrid更改,则窄/宽状态确实会在加载时正确应用,但我当然会丢失所需的方向更改

您可以尝试替换整个ItemsPanelTemplate吗?在资源中创建这两个项目:

<ItemsPanelTemplate x:Key="VerticalWrapGrid">
    <ItemsWrapGrid Orientation="Vertical"/>
</ItemsPanelTemplate>
<ItemsPanelTemplate x:Key="HorizontalWrapGrid">
    <ItemsWrapGrid Orientation="Horizontal"/>
</ItemsPanelTemplate>

然后在需要时交换:

<VisualState x:Name="WideState">
    <VisualState.StateTriggers>
        <AdaptiveTrigger MinWindowWidth="720" />
    </VisualState.StateTriggers>
    <VisualState.Setters>
        <Setter Target="ZonesPanel.ItemsPanel" Value="{StaticResource HorizontalWrapGrid}" />
    </VisualState.Setters>
</VisualState>
<VisualState x:Name="NarrowState">
    <VisualState.StateTriggers>
        <AdaptiveTrigger MinWindowWidth="0" />
    </VisualState.StateTriggers>
    <VisualState.Setters>
        <Setter Target="ZonesPanel.ItemsPanel" Value="{StaticResource VerticalWrapGrid}" />
    </VisualState.Setters>
</VisualState>


RTM前版本的Windows 10中有一个错误,听起来就像这样。您使用的是什么版本?@stenobot我使用的是正式的Windows 10和Visual Studio 2015版本,并且安装了1.1 SDK工具。我也面临同样的问题。我使用的是Windows 8.1和Visual Studio 2015版本,并安装了1.1 SDK工具。
ZonesWrapGrid
元素似乎在您的XAML中丢失,因此窄状态无法应用。您能否尝试删除引用ZonesWrapGrid.Orientation的setter,然后再次运行该应用程序以查看其是否有效?igrali是正确的。我尝试了你的代码并删除了ZonesWrapGrid.Orientation引用,它解决了这个问题。谢谢,它解决了这个问题(确实从宽到垂直/从窄到水平进行了交换)。原始代码是否正常工作,或者这只是.net中需要替换的一个bug?
<VisualState x:Name="WideState">
    <VisualState.StateTriggers>
        <AdaptiveTrigger MinWindowWidth="720" />
    </VisualState.StateTriggers>
    <VisualState.Setters>
        <Setter Target="ZonesPanel.ItemsPanel" Value="{StaticResource HorizontalWrapGrid}" />
    </VisualState.Setters>
</VisualState>
<VisualState x:Name="NarrowState">
    <VisualState.StateTriggers>
        <AdaptiveTrigger MinWindowWidth="0" />
    </VisualState.StateTriggers>
    <VisualState.Setters>
        <Setter Target="ZonesPanel.ItemsPanel" Value="{StaticResource VerticalWrapGrid}" />
    </VisualState.Setters>
</VisualState>