Dan*_*son 8 c# mytoolkit uwp uwp-xaml
我正在为Win10移植一个Win8.1应用程序到UWP并遇到一个奇怪的问题AppBar.我们尝试使用CommandBar而不是AppBar,但问题仍然发生在我们身上.我们使用的是MyToolkit的最新版本(撰写本文时为2.5.16).我们的观点如下:
SomeView从导出BaseViewdervices从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>
Run Code Online (Sandbox Code Playgroud)
哪里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?我确信我可能会以某种方式暴力破解,但我觉得可能有更好的方式,或者我错过了一些非常简单的东西.
只需切换到即可CommandBar。CommandBar开箱即用,无论是Minimal还是Compact模式,都可以很好地工作。CommandBar是推荐的首选控制AppBar。显然,保留的唯一原因AppBar是最小化更改。
重要说明:仅当升级使用AppBar的Universal Windows 8应用程序并且需要最小化更改时,才应使用AppBar。对于Windows 10中的新应用,我们建议改为使用CommandBar控件。
页:
<paging:MtPage
x:Class="App3.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App3"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:paging="using:MyToolkit.Paging"
mc:Ignorable="d">
<paging:MtPage.Resources>
</paging:MtPage.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
</Grid>
<paging:MtPage.TopAppBar>
<CommandBar x:Name="appbar1" ClosedDisplayMode="Minimal" >
<CommandBar.Content>
<local:MyUserControl1></local:MyUserControl1>
</CommandBar.Content>
</CommandBar>
</paging:MtPage.TopAppBar>
Run Code Online (Sandbox Code Playgroud)
用户控制:
<UserControl
x:Class="App3.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App3"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid>
<StackPanel Orientation="Horizontal">
<AppBarButton Icon="Home" Label="Home"></AppBarButton>
<AppBarButton Icon="Back" Label="Back"></AppBarButton>
<AppBarButton Icon="Rotate" Label="Rotate"></AppBarButton>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |