在xaml中重用元素(win store app)

时间:2013-06-29 15:55:36

标签: wpf windows-8 element reusability windows-store

在我的代表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 个答案:

答案 0 :(得分:1)

您希望跨多个页面共享AppBar。遗憾的是,在Windows应用商店应用中,使用StaticResource时,无法使用App.xaml中定义的AppBar,就像Windows Phone一样。 有两种方法可以做到:

  1. 在主页面中创建另一个框架,并在此框架中执行所有导航。 Check this MSDN article
  2. 使用AppBar的内容(按钮)创建UserControl,在每个页面上添加TopAppBar并将其内容设置为该UserControl。在StackOverflow answer中建议采用这种方法。
  3. 我可能会发现页面导航没什么问题。如果要从UserControl导航主机框架,请将App.xaml.cs OnActivated方法中创建的Frame实例存储到App类的某些静态属性中。例如public static Frame RootFrame { get; private set; },并按App.RootFrame = new Frame()设置。要从UserControl后面的代码导航,只需调用以下内容:App.RootFrame.Navigate()。 Filip Skakun here on StackOverflow建议采用这种方法。