2010-02-17 2 views
2

J'ai créé une commande usercontrol qui accepte le type d'enum et affecte les valeurs de cette énumération à un contrôle ComboBox dans ce contrôle usercontrol. Très simple. J'utilise ce contrôle utilisateur dans DataTemplates. Le problème vient quand il vient le type imbriqué. J'assignez cette notation estErreur de conception lors de l'écriture de type imbriqué dans xaml

EnumType = "{x: Type monNamespace: ParentType + NestedType}"

Il fonctionne très bien à l'exécution. mais au moment du design, il émet une erreur en disant

Could not create an instance of type 'TypeExtension' 

Pourquoi? Pour cette raison, je ne suis pas en mesure de voir ma fenêtre au moment du design. De l'aide?

+0

pouvez-vous poster un peu mor code? – punker76

+0

Est-ce dans Visual Studio? Mélange? –

+0

@AaronMcIver: c'est dans Visual Studio, je n'ai pas vérifié avec Blend. – viky

Répondre

1

According to Rob Relyea forme Microsoft présente un défaut dans le VS2008/Designer 2010.

Nous avions quelqu'un regarder l'utilisation de {x: Type Foo + Bar} modèle et essai dans VS2010 et Blend4. Il semble que cela fonctionne correctement à l'exécution, CompileTime, dans le mélange 4, mais échoue dans WPF Designer de VS2010.

Nous avons classé un bug et l'avons routé vers l'équipe WPF Designer.

1

Selon this post Vous devez utiliser les fonctionnalités de la classe MarkupExtension.

mais il y a une autre façon de le contourner:

<ObjectDataProvider 
    MethodName="GetValues" 
    ObjectType="{x:Type sys:Enum}" 
    x:Key="NestedEnumDataProvider"> 
    <ObjectDataProvider.MethodParameters> 
     <x:Type TypeName="myNamespace:ParentType+NestedType"/> 
    </ObjectDataProvider.MethodParameters> 
</ObjectDataProvider> 
Questions connexes