我正在为UWP平台构建我的第一个应用程序,我决定从 Template10 中包含的汉堡包模板开始。
我需要做的是类似于Windows 10中包含的Groove Music应用程序的汉堡菜单,因此单击汉堡的按钮会打开一个以创建新类别(就像他们为播放列表所做的那样)。Flyout
一切正常,Flyout
刚刚打开没有问题,在移动设备上使用该应用程序时出现问题:其中Flyout
包含一个文本输入,使虚拟键盘产生,移动Flyout
到屏幕外部。
我的目标是当应用程序处于狭窄的视觉状态时,让 Flyout 全屏显示,而在其他情况下显示在汉堡包的右侧。
不幸的是,似乎将AdaptiveTrigger
s 添加到Shell.xaml
页面不起作用,因为没有任何反应。
这是相关的XAML代码:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="AdaptiveVisualStateGroup">
<VisualState x:Name="VisualStateNarrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="{StaticResource NarrowMinWidth}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<!-- TODO: change properties for narrow view -->
<Setter Target="CategoryFlyout.Placement"
Value="Full"/>
<Setter Target="MyHamburger.HamburgerBackground"
Value="Green"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="VisualStateNormal">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="{StaticResource NormalMinWidth}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<!-- TODO: change properties for normal view -->
<Setter Target="CategoryFlyout.Placement"
Value="Right"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="VisualStateWide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="{StaticResource WideMinWidth}" />
</VisualState.StateTriggers>
<VisualState.Setters>
<!-- TODO: change properties for wide view -->
<Setter Target="CategoryFlyout.Placement"
Value="Right"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Page.Resources>
<Flyout x:Key="CategoryFlyout"
x:Name="CategoryFlyout"
Placement="Right">
<StackPanel Orientation="Vertical">
<TextBlock Text="Set category name:"
HorizontalAlignment="Left"/>
<TextBox Width="200"
Margin="0,5,0,5"
x:Name="CategoryTextBox"
utils:ImmediateSourceUpdate.IsEnabled="True"
utils:ImmediateSourceUpdate.Text="{x:Bind ViewModel.NewCategoryName, Mode=TwoWay}"/>
<Button Content="Add"
HorizontalAlignment="Right"
Command="{x:Bind ViewModel.AddCategoryCommand}"/>
</StackPanel>
</Flyout>
</Page.Resources>
如您所见,有一条<Setter Target="MyHamburger.HamburgerBackground" Value="Green"/>
线用于查看问题是否与Flyout
自身有关,但即使这条线也不起作用(我希望汉堡按钮的背景为绿色,但它不会从默认值更改)。
Tempate10的模型包括一个MainPage.xaml,它打印当前的视觉状态,所以我确定我使用正确的模型来设置Flyout
,但我仍然没有结果。什么都没有发生,甚至调试控制台中的错误也没有。
我也尝试将AdaptiveTrigger
s插入其中,HamburgerMenu
但即使这样也没有用。
您对为什么会失败有任何想法吗?