为Windows Phone 8创建一个主框架

本文关键字:一个 框架 Windows Phone 创建 | 更新日期: 2023-09-27 18:21:06

我制作了一个包含大量页面的应用程序。每个页面由两个部分组成:页面之间共享的同一部分(一些网格、控件和事件等),以及包含每个页面不同内容的单独部分。

现在我想知道我是否可以使用包含第一部分的"主框架",所以我只需要创建包含第二部分的页面(在通用应用程序中,他们有frame.Navigate(),但我不知道WP8是否有)。

为Windows Phone 8创建一个主框架

实际上在App.xaml.cs中定义了一个PhoneApplicationFrame(称为RootFrame)。

您可以为它创建一个默认样式,并在其ControlTemplate中添加共享内容。

下面的代码来自我的应用程序627.AM。你可以看到我把徽标(AnimatedLogoView)放在那里,所以我不需要在每一页上都重复它们。

    <Style TargetType="phone:PhoneApplicationFrame">
        <Setter Property="IsTabStop" Value="False"/>
        <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
        <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeNormal}"/>
        <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
        <Setter Property="VerticalAlignment" Value="Stretch"/>
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        <Setter Property="VerticalContentAlignment" Value="Stretch"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="{x:Null}"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="phone:PhoneApplicationFrame">
                    <Border x:Name="ClientArea" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" d:DesignWidth="480" d:DesignHeight="800" >
                        <Border.Resources>
                            <Storyboard x:Name="ShowGlobalMessageAnimation"/>
                        </Border.Resources>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="80"/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                            <views:AnimatedLogoView x:Name="Logo" />
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Grid.RowSpan="2" />
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

希望这能有所帮助!

您可以为在多个页面上使用的零件创建资源。您可以找到一些关于如何在MSDN 上创建资源的背景知识

相关文章: