2013-04-18 1 views
3

J'ai créé une très petite application WPF et fait face à un problème. J'ai ci-dessous les classes.Le nom 'InitializeComponent' n'existe pas dans le contexte actuel: comportement étrange

Employee.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace StaticResourceVsDynamicResource 
{ 
    public class Employee 
    { 
     public string strName; 
     public int nId; 

     public Employee() 
     { 
      strName = "Default name"; 
      nId = -1; 
     } 

     public string Name 
     { 
      get{return strName;}set{strName = value;} 
     } 

     public int ID 
     { 
      get{return nId;}set{nId = value;} 
     } 
    } 
} 

MainWindow.xamal.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace StaticResourceVsDynamicResource 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      this.Resources["objEmployee"] = new Employee { Name = "Changed employee", ID = 100}; 

      this.Resources.Add("myBrush",new SolidColorBrush(SystemColors.GrayTextColor));    
     } 
    } 
} 

MainWindow.xamal

<Window x:Class="StaticResourceVsDynamicResource.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:StaticResourceVsDynamicResource" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow" Height="350" Width="525"> 
<Window.Resources>   
    <x:ArrayExtension Type="{x:Type sys:String}" x:Key="objNames"> 
     <sys:String>A1</sys:String> 
     <sys:String>A2</sys:String> 
    </x:ArrayExtension> 
    <local:Employee x:Key="objEmployee"></local:Employee> 
</Window.Resources> 
<Grid>      
    <Grid Height="100" HorizontalAlignment="Left" Margin="281,12,0,0" Name="grid3" VerticalAlignment="Top" Width="200" >   
     <ComboBox ItemsSource="{StaticResource ResourceKey=objNames}" Height="23" HorizontalAlignment="Left" Margin="48,37,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" /> 
    </Grid> 
</Grid> 

Au-dessus de code XAML est Intresting. Quand j'ai construit ce code, je n'ai eu aucune erreur. Pour une raison quelconque, je viens de mélanger la position de <x:ArrayExtension> et <local:Employee> et je commence à obtenir une erreur ci-dessous.

The name 'InitializeComponent' does not exist in the current context 

Quand je déclare <local:Employee> avant <x:ArrayExtenion> alors que je reçois cette erreur. Je suis sûr que cela doit faire quelque chose avec l'espace de noms, mais je ne suis pas capable de le comprendre. Voir le code ci-dessous qui provoque une erreur de compilation.

<Window.Resources> 
    <local:Employee x:Key="objEmployee"></local:Employee> 
    <x:ArrayExtension Type="{x:Type sys:String}" x:Key="objNames"> 
     <sys:String>A1</sys:String> 
     <sys:String>A2</sys:String> 
    </x:ArrayExtension>   
</Window.Resources> 

Quelqu'un peut-il aider? Il semble être un problème étrange, mais il est ...

Cordialement, Hemant

+0

Je reçois ce même message d'erreur lorsque je créer un tout nouveau projet WPF. Il ne compilera pas ou ne fonctionnera pas. – Jeff

+1

S'il vous plaît voir aussi [XAML ne compile pas, mais sans aucun message d'erreur ...] (http://stackoverflow.com/q/30879531). Même configuration de base. Inclut un lien vers le rapport de bug Connect. –

Répondre

0

J'ai eu le même problème. La façon dont je l'ai résolu était en changeant l'action de construction du fichier XAML en Page.

au crédit de la source où j'ai trouvé la solution: http://blog.mahop.net/post/Compile-Error-for-WPF-Files-The-name-InitializeComponent-does-not-exist-in-the-current-context.aspx

+1

Cette réponse ne répond pas du tout à cette question particulière. En effet, par défaut, l'action de construction d'un fichier XAML Window WPF est déjà "Page". –

+0

Le lien ne fonctionne pas – marbel82

Questions connexes