WPF-erreur de Compilation: les balises de type 'PropertyArrayStart' ne sont pas supportées dans les sections de modèle

normalement, Je ne voudrais pas simplement poster un message d'erreur sur SO, mais après une recherche Google n'a trouvé qu'un seul coup, j'ai pensé que je voudrais au moins ouvrir le plancher pour cette erreur ici sur SO.

j'ai un contrôle personnalisé appelé Sparkline avec une propriété de dépendance appelée Values de type unit[]. Voici un exemple où je l'utiliser dans un DataTemplate:

<DataTemplate DataType="{x:Type Activity:ActivityHistory}">
    <Controls:Sparkline Grid.Column="1" Values="{Binding Path=Values}" />
</DataTemplate>

ce code ne se compile pas. Je reçois le message d'erreur:

Balises de type 'PropertyArrayStart' ne sont pas supportés dans les sections de template.

les numéros de ligne/colonne indiquent le début du Values l'attribut.

cela m'a vraiment bouleversé. Retour de la recherche sur Google résultatJohn_C frapper exactement le même problème. Malheureusement, sa solution consistait à déplacer la commande vers un assemblage séparé. Le mien est déjà dans une autre assemblée. Je pense que quelque chose d'autre est à jouer.

je n'ai jamais entendu parler de PropertyArrayStart. La recherche ne renvoie que quelques pages liées à la sérialisation XAML. Des choses intéressantes, mais pas beaucoup d'aide.

en y réfléchissant, je ne peux pas penser à des propriétés de dépendances dans le framework qui ont des types de tableaux. Est-ce possible?

j'ai aussi essayé d'utiliser un élément imbriqué au lieu d'une extension de balisage pour l' Binding.

<DataTemplate DataType="{x:Type Activity:ActivityHistory}">
    <Controls:Sparkline Grid.Column="1">
        <Controls:Sparkline.Values>
            <Binding Path="Values"/>
        </Controls:Sparkline.Values>
    </Controls:Sparkline>
</DataTemplate>

...toujours pas de chance.

Toutes les idées bienvenue!

16
demandé sur Drew Noakes 2009-05-29 19:08:11

1 réponses

ça fait 27 minutes qu'il y a de l'événement... :)

changer le type de propriété de la dépendance de unit[]IList<unit> résolu le problème. Mieux que tout, il n'a pas exigé beaucoup de changements de code car le tableau implémente déjà cette interface.

Je ne suis pas sûr que l'envoi au tableau via l'interface (callvirt) soit plus lent. Je suppose que oui.

le message d'erreur original indique qu'il y a quelque chose qui se passe ici que je ne comprends pas tout à fait. Je vais accepter toute réponse qui explique correctement.

41
répondu Drew Noakes 2009-05-29 15:39:57