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
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
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. –