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按钮时,我都会收到一个异常错误。很抱歉,这发生在您身上。信息如此之少,我无能为力。但是,我有没有像你问的那样解释这个技巧?这就是问题所在。