【问题标题】:Global App bar on windows 8 applicationWindows 8 应用程序上的全局应用程序栏
【发布时间】:2013-03-10 14:49:05
【问题描述】:



我正在开发一个 Windows 8 应用程序项目。我正在使用 Visual Studio 2012,它是预定义的模板(GroupedPage、SplitPage、ItemsPage)。
这时候我需要添加一个App bar。我选择的方式是创建一个并将其显示在所有页面上。我正在阅读这篇文章:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj150604.aspx

为了将它包含在我的项目中,我将全局页面设置为 App.xaml 上的起始页面

protected async override void OnLaunched(LaunchActivatedEventArgs args)
...
  if (!rootFrame.Navigate(typeof(GlobalPage), args.Arguments))
                    throw new Exception("Failed to create initial page");
...

在全局页面上,我正在更改 OnLaunched 方法,以便进入真正的主页:

 rootPage = e.Parameter as Page;            
            frame1.Navigate(typeof(MainPage), this);

我为按钮添加事件订阅,比如

 private void ButtonBlogList_Click(object sender, RoutedEventArgs e)
        {
            this.Frame.Navigate(typeof(BlogListManagement), this);
        }

启动应用后,显示App栏,我可以用里面的应用按钮导航,但是第一次导航后,目标页面上没有显示AppBar。

知道我的错误吗?
感谢您的帮助。

【问题讨论】:

    标签: c# xaml windows-8 microsoft-metro appbar


    【解决方案1】:

    您要做的是在 LayoutAwarePage 上设置 AppBar,因为所有页面都派生自该页面。 对于 AppBar 的内容,您可能需要使用 UserControl,以便于编码和样式化。

    首先创建UserControl:

    <UserControl
    x:Class="AppBarGlobal.AppbarContent"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:AppBarGlobal"
    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">
    
    <StackPanel Orientation="Horizontal">
        <Button
            Content="1"
            Style="{StaticResource AppBarButtonStyle}" />
        <Button
            Content="2"
            Style="{StaticResource AppBarButtonStyle}" />
    </StackPanel> </UserControl>
    

    然后在要创建 AppBar 的 LayoutAwarePage 的构造函数中,将内容设置为 UserControl,并将其添加到页面上的 Button 或 TopAppBar - 在此示例中,我使用 BottomAppBar 并在构造函数中设置所有内容,像这样:

        public LayoutAwarePage()
        {
            bar = new AppBar();
            bar.Content = new AppbarContent();
            this.BottomAppBar = bar;
            //and the remaining code for the constructor hereafter.
    

    这应该允许您在派生自 LayoutAwarePage 的所有页面上的 Windows 应用商店应用中拥有一个全局应用栏。

    【讨论】:

    • 感谢您的帮助,这正是解决方案。我找错路了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多