2009-12-29 6 views
2

Ceci est en fait deux questions en une:Élément de tableau manquant dans UserControl XAML?

Tout d'abord, lorsque vous écrivez votre XAML et IntelliSense ne reconnaît pas le type que vous souhaitez utiliser (dans mon cas, Array), quelles mesures allez-vous jusqu'à comprendre ce qui passe? Je regarde d'abord mes espaces de noms XML pour m'assurer que tout est en ordre. Si c'est un type CLR (pas un de mes propres), alors je finis par vérifier Google (et ne trouve généralement pas ce dont j'ai besoin).

Dans mon cas, ma requête était "XAML WPF namespace missing Array", qui me dit, comme je l'avais soupçonné, que Array est dans http://schemas.microsoft.com/winfx/2006/xaml, mais il n'apparaît pas dans Intellisense. Pourquoi donc?

Tous les exemples que je vois sont dans une fenêtre ou une application, pas dans un UserControl comme le mien. Est-ce lié à mon problème? Ok, j'imagine que c'était trois questions techniques. :)

Répondre

3

Je ne suis pas sûr d'avoir vraiment compris votre question ... Si vous voulez déclarer un tableau en XAML, utilisez le x:Array markup extension. Exemple avec un tableau de Int32:

<UserControl x:Class="YourNamespace.YourClass" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib"> 

    <UserControl.Resources> 
     <x:Array x:Key="arrayOfInt32" Type="sys:Int32"> 
      <sys:Int32>4</sys:Int32> 
      <sys:Int32>8</sys:Int32> 
      <sys:Int32>15</sys:Int32> 
      <sys:Int32>16</sys:Int32> 
      <sys:Int32>23</sys:Int32> 
      <sys:Int32>42</sys:Int32> 
     </x:Array> 
    </UserControl.Resources> 

    ... 
+0

Je viens de relire ma question, et j'ai réalisé que j'avais oublié de coller dans un exemple de code. Cependant, le vôtre est un bon exemple. Mon problème est que lorsque je tape x: Arr, "Array" n'apparaît pas dans le popup Intellisense. Je viens d'obtenir "ArrayExtension". Cela dit, j'ai juste décidé d'utiliser x: Array de toute façon, et tout est encore compilé. Alors est-ce un problème Intellisense? Je suis habitué à ça ne fonctionne pas bien dans VC++, mais en développement C#, Intellisense ne m'a jamais manqué. – Dave

+1

J'ai le même problème dans VS2008 et VS2010. Mais en réalité ce n'est pas vraiment un problème: cela devrait fonctionner même si vous écrivez x: ArrayExtension. Pour les extensions de balisage, le suffixe "Extension" peut être omis –

Questions connexes