Xaml не может создать экземпляр X

Я пытаюсь создать страницу настроек для своего приложения в 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 (local:AppSettings), я получаю сообщение об ошибке, в котором говорится, что «невозможно создать экземпляр AppSettings».


person Rajeev Nair    schedule 01.05.2011    source источник
comment
У меня точно такая же проблема.   -  person Juozas Kontvainis    schedule 29.12.2011


Ответы (3)


Это связано с тем, что создание экземпляра ApplicationsSettings вызывает исключение. Если вы добавите следующее в свой конструктор, все будет в порядке;

try
{
    settings = IsolatedStorageSettings.ApplicationSettings;
}
catch (System.IO.IsolatedStorage.IsolatedStorageException e)
{
    // handle exception
}
person Henrik Hartz    schedule 21.02.2012
comment
Microsoft необходимо обновить свои инструкции, чтобы отразить это! msdn.microsoft.com/en-us/library/ff769510 (v=против 92) - person jedmao; 10.06.2012

Чтобы объекты были ссылкой в ​​xaml, они должны иметь конструктор без параметров по умолчанию. Я бы еще раз проверил, так ли это.

Другие потенциальные проблемы могут быть вызваны исключением в конструкторе.

person Nigel Sampson    schedule 01.05.2011
comment
Я проверил, у меня есть конструктор без параметров. - person Rajeev Nair; 02.05.2011
comment
Я увидел, что мое приложение работает без проблем, даже когда я вижу эту ошибку в своем списке ошибок в VS, когда мое приложение отдыхает. Может быть, это решается во время выполнения? Я не уверена.... - person Rajeev Nair; 02.05.2011

Одной из возможных причин также может быть сбой инициализации свойства зависимостей.

У меня был следующий код в классе, который я пытался создать в XAML:

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

... где это свойство зависимости предназначалось для хранения ссылки на ListView. Но фрагмент кода VS по умолчанию «propdp» сгенерировал этот «новый UIPropertyMetadata (0)», который немного неверен в случае ссылочной переменной. Это должно быть «новое UIPropertyMetadata (null)».

Изменение этого исправило проблему для меня. По какой-то причине я не получаю никаких видимых исключений из этого во время выполнения.

person Ollikat    schedule 21.02.2014