2009-05-29 8 views
13

Normalerweise würde ich nicht einfach eine Fehlermeldung auf SO posten, aber nachdem eine Google-Suche nur einen Treffer gefunden hat, dachte ich, ich würde zumindest öffne den Boden für diesen Fehler hier auf SO.WPF - Kompilierungsfehler: Tags des Typs 'PropertyArrayStart' werden in den Vorlagenabschnitten nicht unterstützt

Ich habe ein benutzerdefiniertes Steuerelement namens Sparkline mit einer Abhängigkeitseigenschaft namens Values des Typs unit[]. Hier ist ein Beispiel, wo ich es in einem DataTemplate verwenden:

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

Dieser Code nicht kompiliert. Ich erhalte die Fehlermeldung:

Tags of type 'PropertyArrayStart' are not supported in template sections.

Die Zeile/Spalte Zahlen den Beginn des Values Attribut anzuzeigen.

Das hat mich wirklich geworfen. Die Suche auf Google ergab one result, wobei John_C genau das gleiche Problem traf. Leider bestand seine Lösung darin, das Steuerelement in eine separate Baugruppe zu verschieben. Nun, meins ist schon in einer separaten Versammlung. Ich vermute, dass etwas anderes im Spiel ist.

Ich habe noch nie von PropertyArrayStart gehört. Wenn Sie danach suchen, werden nur einige Seiten zurückgegeben, die sich auf die XAML-Serialisierung beziehen. Interessante Sachen, aber nicht viel Hilfe.

Wenn ich darüber nachdenke, kann ich mir keine Abhängigkeitseigenschaften im Framework vorstellen, die Array-Typen haben. Ist das erlaubt?

Ich habe auch versucht, ein verschachteltes Element anstelle einer Markup-Erweiterung für die Binding.

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

... immer noch kein Glück.

Alle Ideen willkommen!

Antwort

38

Es war ein ereignisreiches 27 Minuten ... :)

löste das Abhängigkeitseigenschaft des Typs unit[]-IList<unit> Ändern des Problems. Das Beste von allem ist, dass es viele Codeänderungen nicht erfordert, da das Array diese Schnittstelle bereits implementiert.

Ich bin mir nicht sicher, ob die Disposition zum Array über die Schnittstelle (Callvirt) langsamer ist. Meine Vermutung ist ja.

Die ursprüngliche Fehlermeldung deutet darauf hin, dass hier etwas los ist, das ich nicht ganz verstehe. Ich werde jede Antwort akzeptieren, die es richtig erklärt.

+1

du bist mein Held. :) –

+1

Ich schätze auch die Antwort. Ich selbst und alle anderen waren dabei, eine Menge Zeit damit zu verbringen, das herauszufinden. Eine schnelle StackOverflow-Suche war um Mitternacht schön. +1 – TravisWhidden