57 votes

WPF IOException Ne peut pas localiser la ressource

J'ai une application WPF.

La page qui s'ouvre lorsque l'application s'exécute dans MainWindow.xaml, tel que défini dans la StartupUri attribut de l'Application.fichier xaml. Cette page s'ouvre très bien.

Cependant, si j'essaie d'ouvrir d'autres fenêtres à l'aide de l'Afficher ou de la méthode ShowDialog-je obtenir une IOException dans la méthode InitializeComponent disant "Impossible de localiser la ressource 'Window1.xaml" (ou quel que soit le fichier est appelé). Cela se produit à chaque fenêtre, je créer. J'ai cherché en ligne, mais toutes les solutions semblent dire "assurez-vous que le StartupUri attribut de l'Application.xaml est correct" et la mienne, donc MainWindow d'ouverture.

Une idée de ce qui se passe?

78voto

Killercam Points 9388

Le ci-dessus ne fonctionne pas pour moi, mais ce n'travail a été comme suit. Ouvrir l' App.xaml

<Application x:Class="dotDiff2013.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
    </Application.Resources>
</Application>

Il faut ensuite changer la start-up URI entièrement qualifié. Dans mon cas, j'avais déplacé mon MainWindow.xaml pour un dossier appelé "Main", afin de changer la au-dessus de URI

StartupUri="Main/MainWindow.xaml"

Résolu mon problème.

14voto

user665780 Points 165

J'ai eu ce problème lors de la "AssemblyName" et "l'espace de Noms par Défaut" sur les paramètres du projet avaient la même valeur. La modification de la AssemblyName à quelque chose d'autre a résolu le problème.

10voto

CodeNaked Points 23538

Si vous ouvrez le code-behind pour le Window1.fichier xaml (c'est à dire Window1.xaml.cs), vous pouvez faire un clic droit sur l'appel de méthode InitializeComponent et sélectionnez "aller à la Définition de". Il y aura un code comme suit:

/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
    if (_contentLoaded) {
        return;
    }
    _contentLoaded = true;
    System.Uri resourceLocater = new System.Uri("/TestApp;component/mainwindow.xaml", System.UriKind.Relative);

    #line 1 "..\..\..\MainWindow.xaml"
    System.Windows.Application.LoadComponent(this, resourceLocater);

    #line default
    #line hidden
}

Si l'Uri dans le code ci-dessus n'est pas correct, alors vous ne recevrez que l'erreur que vous avez obtenu.

En outre, si l'Action de génération du fichier XAML n'est pas réglé sur "Page", puis vous devez également avoir ce problème. Pour le vérifier, vous pouvez sélectionner le fichier dans l'Explorateur de solutions, puis appuyez sur F4.

Enfin, si quelque chose est de renommer le fichier XAML dans le cadre de votre processus de construction (tels que la dissimulation de l'), puis de nouveau, vous recevez l'erreur.

Autre que cela, je voudrais essayer une "Solution Propre" et "régénérer la Solution" pour s'assurer que le fichier avec l'InitializeComponent définition est reconstruit.

9voto

gosua Points 88

J'ai eu le même problème. La raison pour moi parce que j'ai déménagé le MainWindow.xaml sans réglage de l'Application.xaml. Si vous déplacez votre MainWindow.xaml par exemple dans un dossier appelé "INTERFACE utilisateur" que vous devez ajuster la ligne suivante dans l'Application.xaml

         StartupUri="UI/Mainwindow.xaml"

2voto

user1130316 Points 11

Cette IOException peut être causée par l'assemblée le nom de l'ambiguïté. Par exemple, j'ai nommé un assemblage myproduct.dll, puis ajouter une référence dans l'application WPF myproduct.exe. Cela a donné à l' IOException pour mainwindow.xaml.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X