初始化组件WP8上的XamlParseException

时间:2014-06-05 14:18:05

标签: xaml windows-phone-8 xamlparseexception

正如标题所示,当我尝试运行应用程序时,我收到了XamlParseException。我刚刚开始学习xaml,目前我正在阅读一本名为Windows Phone 8游戏开发的书中的教程,这是它给我的例外。

  

发生了System.Windows.Markup.XamlParseException         的HResult = -2146233087         Message =属性' System.Windows.Controls.Panel.Children'设置不止一次。 [线路:53位置:74]         来源= System.Windows         LineNumber上= 53         LinePosition = 74         堆栈跟踪:              在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)              在SpaceAim3D.Views.MenuPage.InitializeComponent()              在SpaceAim3D.Views.MenuPage..ctor()         的InnerException:

这是我的代码

 public partial class MenuPage : PhoneApplicationPage
{
    private Dictionary<String, String> m_urls = new Dictionary<string, string>();

    public MenuPage()
    {
        InitializeComponent();
        m_urls["play"] = "/Views/GamePage.xaml";
        m_urls["ranks"] = "/Views/RanksPage.xaml";
        m_urls["map"] = "/Views/MapPage.xaml";
        m_urls["world"] = "/Views/WorldPage.xaml";
        m_urls["help"] = "/Views/HelpPage.xaml";
        m_urls["web"] = "/Views/WebPage.xaml";
        m_urls["settings"] = "/Views/SettingsPage.xaml";
    }

    //This is a common event handler used by all entities on menu page
    private void BrdPage_Tap(object sender, GestureEventArgs e)
    {
        //To get the tag name we case the sender object and get the tag as a string
        String page = ((Border)sender).Tag as String;
        NavigationService.Navigate(new Uri(m_urls[page], UriKind.Relative));
    }
}

这是我的Xaml代码

    <phone:PhoneApplicationPage
    x:Class="SpaceAim3D.Views.MenuPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Landscape" Orientation="Landscape"
    mc:Ignorable="d"
    shell:SystemTray.IsVisible="True">

    <phone:PhoneApplicationPage.Resources>
        <Style TargetType="Border">
            <Setter Property="CornerRadius" Value="125" />
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush ImageSource="/Assets/asteroid.png" />
                </Setter.Value>
            </Setter>
        </Style>

        <Style TargetType="TextBlock" x:Key="ButtonText">
            <Setter Property="FontSize" Value="40"/>
            <Setter Property="FontWeight" Value="Bold" />
            <Setter Property="Foreground" Value="Black" />
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="HorizontalAlignment" Value="Center" />
        </Style>

    </phone:PhoneApplicationPage.Resources>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0"
                   Style="{StaticResource PhoneTextTitle1Style}">
                   Space Aim <Bold>3D</Bold>
        </TextBlock>

        <Grid.Background>
            <ImageBrush ImageSource="/Assets/background.png" />
        </Grid.Background>

        <Border Grid.Row="1" Margin="10,5,536,194" Tap="BrdPage_Tap" Tag="play">
            <TextBlock Style="{StaticResource ButtonText}" Text="PLAY!"/>
        </Border>
        <Border Margin="255,74,291,221" Grid.RowSpan="2" Tap="BrdPage_Tap" Tag="ranks">
            <TextBlock Style="{StaticResource ButtonText}" Text="RANKS!" Margin="12,66,10,66" Width="160"/>
        </Border>
        <Border Grid.Row="1" Margin="12,162,534,37" Tap="BrdPage_Tap" Tag="map">
            <TextBlock Style="{StaticResource ButtonText}" Text="MAP"/>
        </Border>
        <Border Grid.Row="1" Margin="238,189,308,10" Tap="BrdPage_Tap" Tag="world">
            <TextBlock Style="{StaticResource ButtonText}" Text="WORLD"/>
        </Border>
        <Border Grid.Row="1" Margin="420,76,126,123" Tap="BrdPage_Tap" Tag="web">
            <TextBlock Style="{StaticResource ButtonText}" Text="WEB"/>
        </Border>
        <Border Grid.Row="1" Margin="556,148,-10,51" Tap="BrdPage_Tap" Tag="help">
            <TextBlock Style="{StaticResource ButtonText}" Text="HELP"/>
        </Border>
        <Border Margin="503,54,12,241" Grid.RowSpan="2" Tap="BrdPage_Tap" Tag="settings">
            <TextBlock Style="{StaticResource ButtonText}" Text="SETTINGS"/>
        </Border>
    </Grid>
</phone:PhoneApplicationPage>

1 个答案:

答案 0 :(得分:0)

我将所有带有border标签的xaml代码移到了grid.background上面并且它有效