单个页面上的多个应用程序栏

时间:2014-03-05 10:29:46

标签: c# xaml windows-phone-8

我需要一些帮助在一个页面上添加多个应用栏。目前我有Page A.在A中,这意味着两个appbars。一个用户专注于文本框(这将显示所有编辑工具等)的另一个用于当用户失去文本框的焦点时(这是用于保存和删除等一般控件)。

我不想为所有控件使用一个应用栏。我想分开,所以它更整洁。我知道this link但是为了做到这一点,我需要将它添加到App.xaml页面。有没有办法可以将它添加到Page A的xaml或任何代码上以使其工作。我尝试了下面的方法,但没有工作:

<phone:PhoneApplicationPage.Resources>
    <shell:ApplicationBar x:Key="AppBar1" IsVisible="True" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
        <shell:ApplicationBar.MenuItems>
            <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>

    <shell:ApplicationBar x:Key="AppBar2" IsVisible="True" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1" />
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2" />
        <shell:ApplicationBar.MenuItems>
            <shell:ApplicationBarMenuItem Text="MenuItem 1" />
            <shell:ApplicationBarMenuItem Text="MenuItem 2" />
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>

</phone:PhoneApplicationPage.Resources>

谢谢!

2 个答案:

答案 0 :(得分:2)

很简单,将它们添加到页面的资源中:

<phone:PhoneApplicationPage.Resources>

    <shell:ApplicationBar x:Key="AppBar1" IsVisible="True" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1" Click="Button1_Click" />
        <shell:ApplicationBar.MenuItems>
            <shell:ApplicationBarMenuItem Text="MenuItem 1" Click="MenuItem1_Click" />
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>

    <shell:ApplicationBar x:Key="AppBar2" IsVisible="True" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1" Click="Button1_Click" />
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2" Click="Button2_Click" />
        <shell:ApplicationBar.MenuItems>
            <shell:ApplicationBarMenuItem Text="MenuItem 1" Click="MenuItem1_Click" />
            <shell:ApplicationBarMenuItem Text="MenuItem 2" Click="MenuItem2_Click" />
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>

</phone:PhoneApplicationPage.Resources>

答案 1 :(得分:1)

您应该记住定义资源的位置。看看link you have provided资源与整个应用程序连接:

Application.Current.Resources["AppBar1"]);

如果您已将App.xaml中的资源定义为Application.Resources,则代码将起作用 - 然后您定义的AppBars将可用于所有页面。

在您的代码中,您已定义PhoneApplicationPage.Resources,因此它们仅适用于该特定页面。你可以在这个页面上使用它们,例如:

ApplicationBar = this.Resources["AppBar1"] as ApplicationBar;