Xaml无法创建“X”的实例。

5

我正在尝试为我的Windows Phone 7应用程序创建一个设置页面。我创建了AppSettings类,并从MainPage.xaml中引用它。这是我的代码:

<phone:PhoneApplicationPage 
    x:Class="Shapes4Kids.MainPage"
    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"
    xmlns:local="clr-namespace:ShapesSettings;assembly=Shapes4Kids" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="696"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
    <phone:PhoneApplicationPage.Resources>
        <local:AppSettings x:Key="appSettings"></local:AppSettings>
    </phone:PhoneApplicationPage.Resources>

但是在我引用AppSettings(本地:AppSettings行)的代码中,我收到了一个错误消息,指出“无法创建AppSettings的实例”。


我有完全相同的问题。 - Juozas Kontvainis
3个回答

4
这是因为实例化ApplicationsSettings会抛出异常。如果你在构造函数中添加以下代码,就可以解决问题;
try
{
    settings = IsolatedStorageSettings.ApplicationSettings;
}
catch (System.IO.IsolatedStorage.IsolatedStorageException e)
{
    // handle exception
}

1
Microsoft 需要更新他们的 "如何" 文档以反映这一点!http://msdn.microsoft.com/zh-cn/library/ff769510(v=vs.92) - jedmao

3

如果要在 XAML 中引用对象,它们需要具有默认的无参数构造函数。我建议您再次确认一下是否符合这个条件。

其他可能出现的问题是构造函数中抛出异常。


我检查过了,我的类确实有一个无参构造函数。 - Rajeev Nair
1
我发现即使在我的应用程序重置时,在VS的错误列表中看到此错误,但我的应用程序仍然可以无问题运行。也许它是在运行时解决的?我不确定... - Rajeev Nair

0

可能的原因之一也可能是依赖属性初始化失败。

我在我试图在XAML中实例化的类中有以下代码:

public static readonly DependencyProperty ListViewObjectProperty = DependencyProperty.Register(
                                                                                                "ListViewObject",
                                                                                                typeof(ListView),
                                                                                                typeof(WidthConverter),
                                                                                                new UIPropertyMetadata(0));

...其中这个依赖属性是用于保存对ListView的引用。但是VS默认的“propdp”代码片段生成了“new UIPropertyMetadata(0)”,在引用变量的情况下有点错误。应该是“new UIPropertyMetadata(null)”。

更改后,问题得到了解决。由于某种原因,在运行时我没有收到任何可见的异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接