我正在为 UWP 平台构建我的第一个应用程序,我决定从 Template10 中包含的汉堡包模板开始。
我需要做的是与 Windows 10 中包含的 Groove Music 应用程序的汉堡包菜单类似,以便点击汉堡包的按钮打开一个Flyout
创建一个新类别(就像他们为播放列表所做的那样)。
一切正常,Flyout
只是打开而没有问题,在移动设备上使用应用程序时出现问题:Flyout
包含一个文本输入,使虚拟键盘产生,移动{{ 1}}在屏幕外面。
我的目标是让应用程序处于狭窄的视觉状态时全屏显示Flyout,而在其他情况下显示在汉堡包的右侧。
不幸的是,似乎将Flyout
添加到AdaptiveTrigger
页面并不起作用,因为没有任何反应。
以下是相关的 XAML 代码:
Shell.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"/>
本身相关,但即使这条线也无效(I&#39) ; d期望汉堡包按钮的背景为绿色,但它不会默认更改。
Tempate10 的模型包含一个 MainPage.xaml ,它打印当前的视觉状态,因此我确信我使用的是更正一个来设置Flyout
,仍然没有结果。
没有任何事情发生,甚至在调试控制台中都没有错误。
我还尝试在Flyout
内插入AdaptiveTrigger
,但即使这样也无效。
您对此失败的原因有什么看法吗?
答案 0 :(得分:0)
这不是模板10问题。 Flyout控件不适用于Mobile。请使用ContentDialog或自定义弹出窗口。我知道,这不理想;但我不是整个XAML平台的作者,只是模板10. :)
顺便提一下,他们的推理与这一思路有关:Flyout究竟应该如何看待手机?
在所有现实中,如果这是设置或其他内容,只需创建一个新页面。
祝你好运!