1

LayoutAwarePage を表す xy.xaml ファイルには、この 2 つの要素があります。

<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 の場合のように StaticResource を使用して App.xaml で定義された AppBar を参照することはできません。方法は 2 つあります。

  1. メイン ページ内に別のフレームを作成し、このフレームですべてのナビゲーションを行います。この MSDN の記事を確認してください
  2. AppBar のコンテンツ (ボタン) を使用して UserControl を作成し、すべてのページに TopAppBar を追加して、そのコンテンツをその UserControl に設定します。このアプローチは、このStackOverflow answerで推奨されています。

ページ ナビゲーションに少し問題があるかもしれません。ホスティング フレームを UserControl からナビゲートする場合は、App.xaml.cs OnActivated メソッドで作成された Frame インスタンスを App クラスの静的プロパティに格納します。たとえばpublic static Frame RootFrame { get; private set; }、 で設定しApp.RootFrame = new Frame()ます。UserControl の背後にあるコードからナビゲートするには、次のように呼び出しますApp.RootFrame.Navigate()このアプローチは、ここ StackOverflow でFilip Skakun によってアドバイスされました。

于 2013-06-30T15:39:29.203 に答える