2010-07-16 3 views
0

Longue histoire courte, je dois faire ceci:x: Type et tableaux - comment?

ExpressionType="{x:Type sys:Byte[]}" 

En d'autres termes, je dois faire ceci:

foo.ExpressionType=typeof(byte[]); 

Wat faire?


Mise à jour: C'est un bug dans la surface de conception 2010. Cela fonctionne bien à l'exécution.

Répondre

1

S'il n'y a pas moyen de le faire dans le cadre, alors vous pouvez écrire votre propre extension de balisage:

public class ArrayTypeExtension 
    : MarkupExtension 
{ 
    public ArrayTypeExtension() {} 

    public ArrayTypeExtension(Type type) 
    { 
     this.Type = type; 
    } 

    public Type Type { get; set; } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     return Type == null ? null : Type.MakeArrayType(); 
    } 
} 

Utilisation:

ExpressionType="{local:ArrayType sys:Byte}" 

En fait, en faisant simplement {x: Type sys : Byte []} semble fonctionner.

+0

Je crains que cela n'aboutisse à la bonne réponse ... – Will

+0

@Will: En fait, juste faire {{: Type sys: Byte []} 'semble fonctionner pour moi. Que se passe-t-il lorsque vous l'essayez? – Quartermeister

+0

Vous ne devez pas générer l'erreur correctement (?!?!). Vous devriez obtenir l'erreur "Type sys: Byte [] non trouvé." Il va construire, mais échoue lorsqu'il est exécuté. Essayez d'ajouter 'DataContext =" {x: Tapez sys: Byte []} "' dans un nouveau projet de formulaire WPF et exécutez-le. – Will