我正在将 Win8.1 应用程序移植到 Win10 的 UWP 并遇到一个奇怪的问题AppBar
。我们已经尝试使用CommandBar
而不是AppBar
,但问题仍然存在。我们使用的是最新版本的 MyToolkit(撰写本文时为 2.5.16)。我们的观点是这样得出的:
SomeView
派生BaseView
自MtPage
(派生自Page
)
因此,对于特定视图(在本例中为HomeView
),XAML 如下所示:
<views:BaseView
x:Name="pageRoot"
x:Class="OurApp.HomeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="using:OurApp.Controls"
xmlns:views="using:OurApp.Views"
xmlns:viewModels="using:ViewModels"
xmlns:fake="using:ViewModels.Fake"
mc:Ignorable="d" >
<views:BaseView.TopAppBar>
<AppBar>
<controls:NavigationView
x:Name="NavigationView">
<controls:NavigationView.Context>
<viewModels:NavigationViewModel />
</controls:NavigationView.Context>
</controls:NavigationView>
</AppBar>
</views:BaseView.TopAppBar>
<!-- other stuff not relevant to AppBars, etc -->
</views:BaseView>
在哪里NavigationView
有UserControl
一些按钮,NavigationViewContext
并NavigationViewModel
描述哪些按钮应该在哪个页面上处于活动状态,等等。
问题是这会导致一种半开半闭的AppBar
外观(几乎但不完全像ClosedDisplayMode
设置为Compact
),如下所示:
添加ClosedDisplayMode="Minimal"
到控件后,正如在这个问题<AppBar>
中提到的那样,实时可视化树确认 AppBar 具有并且...但它仍然顽固地显示为半开状态,如上面的屏幕截图所示。IsOpen = 0
AppBarClosedDisplayMode.Minimal
奇怪的是,如果用户从HomeView
某个其他视图导航然后返回到该视图,则会正确地使用(!)AppBar
呈现:AppBarClosedDisplayMode.Minimal
我们已经尝试处理视图的NavigatedTo
事件并手动强制ClosedDisplayMode
设置为Minimal
,但这不会影响渲染输出(无论如何,实时可视化树确认已正确设置为Minimal
)。
任何想法为什么会发生这种情况,和/或如何在无需先导航的情况下AppBar
进行渲染?ClosedDisplayMode = Minimal
我敢肯定,我可能会以某种方式暴力破解,但我觉得可能有更好的方法,或者我错过了一些非常简单的东西。