Xaml 如何在WP 8.1中与多个页面共享BottomAppBar
我的应用程序有多个页面,我希望所有页面都有相同的底部应用程序栏 下面是我的底部应用程序栏的代码:Xaml 如何在WP 8.1中与多个页面共享BottomAppBar,xaml,winrt-xaml,windows-phone-8.1,Xaml,Winrt Xaml,Windows Phone 8.1,我的应用程序有多个页面,我希望所有页面都有相同的底部应用程序栏 下面是我的底部应用程序栏的代码: <Page.BottomAppBar> <CommandBar ClosedDisplayMode="Minimal" Background="#FF004557"> <CommandBar.SecondaryCommands> <AppBarButton x:Name="AppBar_1" Label="Ap
<Page.BottomAppBar>
<CommandBar ClosedDisplayMode="Minimal" Background="#FF004557">
<CommandBar.SecondaryCommands>
<AppBarButton x:Name="AppBar_1" Label="AppBar_1" Click="AppBar_1_Click"/>
<AppBarButton x:Name="AppBar_2" Label="AppBar_2" Click="AppBar_2_Click" />
<AppBarButton x:Name="AppBar_3" Label="Appbar_3" Click="AppBar_3_Click" />
<AppBarButton Label="About" />
</CommandBar.SecondaryCommands>
</CommandBar>
</Page.BottomAppBar>
<>我如何做?< p>使用C++、C语言或Visual Basic的Windows存储应用程序中的每个页面都可以有一个AppBar,它被分配给它的TopAppBar和ButoMabar属性。但您可能希望在应用程序中的相关页面上使用相同的AppBar来提供通用导航或命令 这里有一个教程好的 当应用程序第一次运行时,首先执行的是app.xaml.cs文件中的OnLaunched方法。可能是这样的:
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
Windows 8中的导航由导航框架处理,该框架非常类似于浏览器。如果你把浏览器称为一个框架
,你就会得到它。有一个框架和页面加载在里面。您可以加载另一个页面,然后在框架中返回,就像在浏览器中返回到上一个页面一样。而且,就像你的浏览器有历史记录一样,你的Windows8XAML框架有一个backstack
来完成这一点。你也可以前进
该OnLaunched
代码在应用程序中创建第一个框架(因为默认情况下没有框架),并将其设置为Windows.Current.Content
,这是所有应用程序的本机UI容器。具体来说,这是一行Window.Current.Content=rootFrame代码>
从这一点开始,应用程序中的页面,包括MainPage
都会加载到这个新的根框架中。这是Windows 8应用程序的典型实现。这将通过共享应用程序栏进行更改。共享应用程序栏不会将Window.Current.Content
设置为框架
,而是将其设置为一个内部有框架的根页面
这里的目标是根页面
永不更改。导航时,实际上是在根页面
内的框架内导航。因此,您可以将内容放入根页面
,如应用程序条
。此appbar将在根页面框架中加载的所有页面之间共享
这是一个聪明的实现。但有一个警告。如果您的任何页面本身需要自定义appbar,则需要编写相当多的特殊代码将页面的appbar注入共享appbar。如果您没有这个“定制”需求,那么这是一个简单而有效的解决方案
选项2
您没有理由不能创建一个实现AppBar
或CommandBar
的UserControl
,并简单地将其包含在页面中,以便共享逻辑。如果我的页面中有任何定制appbar的机会,我可能会这样做
祝你好运 您可以将您的AppBar
代码放入App.xaml
中,将对应代码放入App.xaml.cs
中,然后将该AppBar
按名称包含在您想要的页数中
<phone:PhoneApplicationPage
x:Class="PhoneApp1.myPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
.
.
.
.
ApplicationBar="{StaticResource myGlobalAppBar}" >
其中“myGlobalAppBar”是App.xaml
文件中给出的AppBar
的名称。在我开始这个问题之前,我已经阅读了这些内容,但不幸的是我没有理解它。我希望这里有人能把它说得更清楚。@CaveJohnson在本例中(从上面的链接),根框架在主页内。这就像在一个页面中查看一个页面。AppBar是在外部页面中定义的,因此内部页面也是如此。我更改了App.xaml.cs代码,现在AppBar显示,但我希望它加载的页面不显示。此外,每当我尝试按下AppBarButton按钮时,我都会收到一个异常错误。很抱歉,这发生在您身上。信息如此之少,我无能为力。但是,我有没有像你问的那样解释这个技巧?这就是问题所在。