【发布时间】:2017-01-02 07:26:13
【问题描述】:
我正在玩/学习 UWP 的视觉状态管理器。当我点击应用程序上的最大化/最小化按钮时,我有一段代码不响应触发器/设置器。如果我手动调整框的大小,它会响应良好。
当我点击最大化/最小化按钮时,我有第二段代码可以很好地响应他的触发器/设置器。
这两个代码看起来都和我一模一样,但我似乎遗漏了一些东西。提前感谢您的帮助
这里是没有响应最大化/最小化按钮的代码:
<Grid Name="MyGrid" Background="White">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="Groups">
<VisualState x:Name="WindowsPhone">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MySplitView.DisplayMode" Value="Inline"/>
<Setter Target="HamburgerButton.Width" Value="100"/>
<Setter Target="MyGrid.Background" Value="LightBlue"/>
<Setter Target="AutoSuggestBox.Visibility" Value="Compact"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="WindowsTablet">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MySplitView.DisplayMode" Value="Overlay"/>
<Setter Target="AutoSuggestBox.Visibility" Value="Visible"/>
<Setter Target="MyGrid.Background" Value="HotPink"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Desktop">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="800"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MyGrid.Background" Value="Orange"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<RelativePanel>
<Button Name="HamburgerButton"
Width="50"
Height="50"
Click="HamburgerButton_Click"
FontFamily="Segoe MDL2 Assets"
Content=""
RelativePanel.AlignLeftWithPanel="True"/>
<AutoSuggestBox Name="AutoSuggestBox"
QueryIcon="Find"
PlaceholderText="Search"
Width="200"
RelativePanel.AlignRightWithPanel="True"
Margin="0,10,0,0"/>
</RelativePanel>
<SplitView Grid.Row="1"
Name="MySplitView"
IsPaneOpen="False"
CompactPaneLength="50"
OpenPaneLength="200"
DisplayMode="CompactOverlay">
<SplitView.Pane>
<ListBox Name="MylistBox"
SelectionMode="Single"
SelectionChanged="MylistBox_SelectionChanged">
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<TextBlock Name="FirstIcon"
FontFamily="Segoe MDL2 Assets"
FontSize="30"
Text=""/>
<TextBlock Name="TextTextBlock"
FontSize="20"
Text="Hello"
FontWeight="Bold"
Margin="20,0,0,0"/>
</StackPanel>
</ListBoxItem>
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<TextBlock Name="SecondIcon"
FontFamily="Segoe MDL2 Assets"
FontSize="30"
Text=""/>
<TextBlock Name="SeconTextBlock"
FontFamily="20"
Text="Hello Again"
FontWeight="Bold"
Margin="20,0,0,0"/>
</StackPanel>
</ListBoxItem>
</ListBox>
</SplitView.Pane>
</SplitView>
</Grid>
这是可以正常工作的代码:
<Grid Name="ColorGrid" Background="Pink">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="VisualStatePhone">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ColorGrid.Background" Value="Red"/>
<Setter Target="MessageTextBlock.FontSize" Value="18"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="VisualStateTablet">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ColorGrid.Background" Value="Yellow"/>
<Setter Target="MessageTextBlock.FontSize" Value="40"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="VisualStateDesktop">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="800"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ColorGrid.Background" Value="Blue"/>
<Setter Target="MessageTextBlock.FontSize" Value="60"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<TextBlock Name="MessageTextBlock" Text="Hello I am forgetting something"/>
</Grid>
【问题讨论】:
-
我能够在 14393 上的一个空白项目中重现这一点。奇怪的是,这似乎只发生在调试会话中。如果你在没有调试的情况下运行,或者从 Start 启动,一切正常。
-
@BoltClock 嗯。确实很奇怪。我按照您提到的进行了测试,没有调试或从头开始,它可以正常工作。多么奇怪的小虫子