3

Windows Phone アプリケーションがあります。アプリケーションを実行すると、この例外が発生し、実行されなくなりました

A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in System.Windows.ni.dll

initializecomponent () 内の app.xaml ファイルでエラーが発生しました。方法

public App()
    {
        // Global handler for uncaught exceptions.
        UnhandledException += Application_UnhandledException;

        // Standard XAML initialization
        InitializeComponent();

        // Phone-specific initialization
        InitializePhoneApplication();

アプリケーションリソースを追加するとエラーが発生したため

  <converter:RssTextTrimmer xmlns:converter="clr-namespace:HomePage" x:Key="RssTextTrimmer" />

それを削除すると、アプリケーションはうまく機能します。

完全なコードは次のとおりです。

<Application
x:Class="HomePage.App"
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">

<!--Application Resources-->
<Application.Resources>
    <local:LocalizedStrings xmlns:local="clr-namespace:HomePage" x:Key="LocalizedStrings"/>
    <converter:RssTextTrimmer xmlns:converter="clr-namespace:HomePage" x:Key="RssTextTrimmer" />

</Application.Resources>

<Application.ApplicationLifetimeObjects>
    <!--Required object that handles lifetime events for the application-->
    <shell:PhoneApplicationService
        Launching="Application_Launching" Closing="Application_Closing"
        Activated="Application_Activated" Deactivated="Application_Deactivated"/>
</Application.ApplicationLifetimeObjects>

コンバーターコード

名前空間 HomePage { class RssTextTrimmer : IValueConverter {

    // Clean up text fields from each SyndicationItem. 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null) return null;

        int maxLength = 200;
        int strLength = 0;
        string fixedString = "";

        // Remove HTML tags and newline characters from the text, and decodes HTML encoded characters. 
        // This is a basic method. Additional code would be needed to more thoroughly  
        // remove certain elements, such as embedded Javascript. 

        // Remove HTML tags. 
        fixedString = Regex.Replace(value.ToString(), "<[^>]+>", string.Empty);

        // Remove newline characters
        fixedString = fixedString.Replace("\r", "").Replace("\n", "");

        // Remove encoded HTML characters
        fixedString = HttpUtility.HtmlDecode(fixedString);

        strLength = fixedString.ToString().Length;



        // Some feed management tools include an image tag in the Description field of an RSS feed, 
        // so even if the Description field (and thus, the Summary property) is not populated, it could still contain HTML. 
        // Due to this, after we strip tags from the string, we should return null if there is nothing left in the resulting string. 
        if (strLength == 0)
        {
            return null;
        }

        // Truncate the text if it is too long. 
        else if (strLength >= maxLength)
        {
            fixedString = fixedString.Substring(0, maxLength);

            // Unless we take the next step, the string truncation could occur in the middle of a word.
            // Using LastIndexOf we can find the last space character in the string and truncate there. 
            fixedString = fixedString.Substring(0, fixedString.LastIndexOf(" "));
        }

        fixedString += "...";

        return fixedString;
    }

    // This code sample does not use TwoWay binding and thus, we do not need to flesh out ConvertBack.  
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

}

4

1 に答える 1

7

RssTextTrimmer.csファイルで、クラスが「クラスRssTextTrimmer:IValueConverter」ではなく「パブリッククラスRssTextTrimmer:IValueConverter」であることを確認してください。

于 2013-06-03T06:56:17.070 に答える