1

在代表 LayoutAwarePage 的 xy.xaml 文件中,我有这两个元素

<StackPanel x:Name="LeftCommands" Orientation="Horizontal" Grid.Column="2" Margin="0,0,100,0" HorizontalAlignment="Right">
     <Button x:Name="BragButton" HorizontalAlignment="Left"/>
</StackPanel>

<Page.TopAppBar>
    <AppBar x:Name="PageAppBar" Padding="10,0,10,0" Height="120" Opacity="0.98">
        <ItemsControl x:Name="groupTopMenuBar" Margin="116,0,40,0">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="0,0,0,0">
                        <Button Click="UpperMenu_Click"
                                Style="{StaticResource TextPrimaryButtonStyle}"
                                Height="Auto" Margin="20,0,20,0"
                                CommandParameter="{Binding Group.MenuItemID}">
                            <StackPanel>
                                <Image Source="{Binding Group.IconURL}" Width="40"
                                       Height="40" VerticalAlignment="Top" Stretch="UniformToFill" />
                                <TextBlock Text="{Binding Group.Name}" HorizontalAlignment="Left"
                                           VerticalAlignment="Bottom"
                                           Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}"
                                           Style="{StaticResource TitleTextStyle}" FontSize="16" />
                            </StackPanel>
                        </Button>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </AppBar>
</Page.TopAppBar>

我需要在我的应用程序的每个页面中使用这些元素,并且我不想在应用程序的每个 .xaml 文件中编写这些代码,所以我想问是否有任何方法可以做到这一点。

谢谢你。

4

1 回答 1

1

您想跨多个页面共享您的 AppBar。不幸的是,在 Windows 应用商店应用程序中,无法像 Windows Phone 那样使用静态资源引用 App.xaml 中定义的 AppBar。有两种方法可以做到这一点:

  1. 在您的主页中创建另一个框架并在此框架中执行所有导航。检查此 MSDN 文章
  2. 使用 AppBar 的内容(按钮)创建 UserControl,在每个页面上添加 TopAppBar 并将其内容设置为该 UserControl。此StackOverflow 答案中建议使用此方法。

我可能会看到页面导航的小问题。如果要从 UserControl 导航托管框架,请将在 App.xaml.cs OnActivated 方法中创建的 Frame 实例存储到 App 类的某个静态属性中。例如public static Frame RootFrame { get; private set; }并将其设置为App.RootFrame = new Frame()。要从 UserControl 背后的代码导航,只需调用如下代码App.RootFrame.Navigate():Filip Skakun在 StackOverflow 上建议了这种方法。

于 2013-06-30T15:39:29.203 回答