50 votes

Pourquoi Visual Studio ne trouve-t-il pas ma méthode WPF InitializeComponent?

C'est très étrange.

J'ai un fichier XAML qui ressemble à ce qui suit ...

 <Window 
    x:Name="window"
    x:Class="ix.Production.Title"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Title" Height="768" Width="1024"
    Loaded="window_Loaded">

    <Window.Resources>
   etc...
 

Et mon code ci-contre ressemble à ce qui suit ...

 using System;
using System.Windows;
using System.Windows.Media.Animation;
using System.Threading;

namespace ix.Production
{
    public partial class Title : Window
    {
        public Title()
        {
           InitializeComponent();
        }
    ....
 

Ce code refuse de compiler car VS.NET insiste sur le fait que InitializeComponent "n'existe pas dans le contexte actuel".

Des idées?

49voto

gp. Points 3015

Un cas que j'ai vu ce qui se passe lorsque vous copiez collez un contrôle xaml/fenêtre etc. Méthode InitializeComponent existe en une .g.cs fichier qui est généré automatiquement. Dans mon cas, après le copier-coller, Action de Construire pour le xaml (dans la fenêtre des Propriétés) a été changé pour "Ressource". changé "Page" et il a commencé à bien fonctionner.

Espérons que cette aide.

Thread qui m'a aidé avec ceci: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/2f755d30-bd8c-4f9b-b36a-9cb56bea15cd

34voto

Bojan Resnik Points 4941

Votre XAML dit:

 x:Class="ix.Production.Title"
 

alors que la classe réelle est ix.Outage.Title . Modifiez la déclaration XAML ou déplacez la classe dans l'espace de noms ix.Production .

14voto

DavidDraughn Points 698

Tellement simple, mais tellement facile d'oublier: MainWindows' x:Class a été fixé à "MainWindow", alors qu'elle devrait avoir été mis à l' namespace.MainWindow (x:Class="namespace.MainWindow"). Si cela n'est pas fait, puis l' MainWindow.g.xaml le fichier ne sera pas inclure un espace de noms d'un bloc, et l'appel à l' InitializeComponent() en MainWindows'constructeur ne fonctionnera pas.

Bien que ce n'est évidemment pas une solution à willem de problème, je l'ai posté ici car il y a beaucoup d'autres solutions énumérées. J'espère que cela aidera quelqu'un d'autre qui tombe par hasard sur ce post en essayant de résoudre leur problème.

7voto

rmoore Points 9561

Vos espaces de noms ne correspondent pas:

 x:Class="ix.Production.Title"
namespace ix.Outage { ...
 

1voto

Yngvar Points 352

J'ai eu le même problème avec un VS2010 exemple de projet que j'ai manuellement revenue à VS2008. J'ai trouvé que j'avais oublié de définir la Cible Cadre du projet pour .NET Framework 3.5. Il était vide dans le projet revenue à VS2008, initialement fixé à 4,0 dans l'original VS2010 projet.

Pour définir la Cible Cadre d'un projet, allez dans les propriétés du projet, l'accès au premier onglet flip Application, puis sélectionnez .NET Framework 3.5 dans le Framework Cible déroulante.

Bien sûr, je préfère Visual Studio me donne une erreur ou d'au moins un avertissement que je n'avais pas mis mon Framework Cible, mais bon, c'est une partie du développement dans Visual Studio, je suppose. VS 2008 WPF project properties

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