2013-06-29 57 views
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文件中寫這段代碼,所以我想問問是否有任何方法如何做到這一點。

謝謝。

回答

1

你想在多個頁面中分享您AppBar。不幸的是,在Windows Store應用程序中,使用StaticResource引用在App.xaml中定義的AppBar是不可能的,就像Windows Phone的情況一樣。 有兩種方式如何做到這一點:

  1. 在您的主頁面內創建另一個框架,並在此框架中執行所有導航。 Check this MSDN article
  2. 創建AppBar與內容(按鈕)用戶控件,每個頁面上添加TopAppBar並設置其內容發送到用戶控件。在StackOverflow answer中建議採用這種方法。

我可能會看到頁面導航小問題。如果你要離開的用戶控件託管框架,其存儲在App.xaml.cs OnActivated方法創建App類的一些靜態屬性的框架實例。例如public static Frame RootFrame { get; private set; }並由App.RootFrame = new Frame()設置。從您的用戶控件後面的代碼導航只需要調用是這樣的:App.RootFrame.Navigate()。 這種方法是由菲利普Skakun here on StackOverflow建議。