2013-06-29 2 views
1

В моем файле xy.xaml который, представляющий LayoutAwarePage у меня есть эти два элементаПовторного использования элемента в 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 невозможно использовать ссылку AppBar, определенную в App.xaml, используя StaticResource, как в случае с Windows Phone. Есть 2 способа как это сделать:

  1. Создайте еще один кадр внутри своей основной страницы и выполните всю навигацию в этой рамке. Check this MSDN article.
  2. Создайте UserControl с содержимым (кнопками) вашего AppBar, добавьте TopAppBar на каждую страницу и установите его содержимое для этого UserControl. Этот подход рекомендуется в этом StackOverflow answer.

Возможно, у меня возникли проблемы при навигации по страницам. Если вы хотите перемещаться по фрейму хостинга с UserControl, сохраните экземпляр Frame, созданный в методе OnActivated App.xaml.cs, для некоторого статического свойства класса App. Например, public static Frame RootFrame { get; private set; } и установите его на App.RootFrame = new Frame(). Чтобы перейти от кода, стоящего за вашим UserControl, просто вызовите что-то вроде этого: App.RootFrame.Navigate(). Этот подход был рекомендован Филипом Скакуном here on StackOverflow.

Смежные вопросы