我的应用有多个页面,我希望所有这些页面都有相同的底部应用栏
以下是我的底部应用栏的代码:
<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>
我该怎么做?
答案 0 :(得分:4)
好。
当您的应用第一次运行时,第一个执行的是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中的导航由导航框架处理,这很像浏览器。如果您将浏览器调用frame
而不是获得它。内部有一个框架和页面加载。您可以加载另一个页面,然后返回框架,就像您在浏览器中返回到上一页一样。而且,就像您的浏览器有历史记录一样,您的Windows 8 XAML框架有backstack
来完成此任务。你也可以继续前进。
OnLaunched
代码会在您的应用中创建第一帧(因为默认情况下没有),并将其设置为Windows.Current.Content
,这是所有应用的本机UI容器。具体来说,它是行Window.Current.Content = rootFrame;
。
从现在开始,您的应用中的页面(包括MainPage
)将加载到此新根框架中。这是Windows 8应用程序的典型实现。这会随共享应用栏而变化。共享应用栏未将Window.Current.Content
设置为frame
,而是将其设置为其中包含框架的根page
。
这里的目标是根page
永远不会改变。导航时,实际上是在frame
内导航,它位于根page
内。因此,您可以将内容放在根page
中,就像appbar
一样。此应用栏将在根页面框架中加载的所有页面之间共享。
这是一个聪明的实现。但有一点需要注意。如果您的任何页面本身需要自定义appbar,则需要编写相当多的特殊代码才能将页面的appbar注入共享的appbar。如果你没有这个&#34; custom&#34;要求,那么这是一个简单而有效的解决方案。
选项2
没有理由您无法创建实现UserControl
或AppBar
的{{1}},只需在您拥有共享逻辑的页面中包含该CommandBar
。如果我的网页中有自定义应用栏的可能性,那可能就是我这样做的方式。
祝你好运!
答案 1 :(得分:2)
使用C ++,C#或Visual Basic的Windows应用商店应用中的每个页面都可以将AppBar分配给其TopAppBar和BottomAppBar属性。但您可能希望在应用程序的相关页面中使用相同的AppBar来提供常见的导航或命令。
答案 2 :(得分:0)
您可以将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}" >
其中&#34; myGlobalAppBar&#34;是AppBar
文件中提供的App.xaml
的名称。