2009-05-29 10 views
13

In genere non inserisco semplicemente un messaggio di errore su SO, ma dopo una ricerca su Google ha trovato solo un hit, ho pensato che avrei almeno apri la parola per questo errore qui su SO.WPF - Errore di compilazione: i tag di tipo "PropertyArrayStart" non sono supportati nelle sezioni del modello

Ho un controllo personalizzato chiamato Sparkline con una proprietà di dipendenza denominata Values di tipo unit[]. Ecco un esempio in cui lo uso in un DataTemplate:

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

Questo codice non viene compilato. Ricevo il messaggio di errore:

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

La linea/numero delle colonne indicano l'inizio dell'attributo Values.

Questo mi ha davvero gettato. La ricerca su Google ha restituito one result dove il numero John_C ha raggiunto esattamente lo stesso problema. Sfortunatamente, la sua soluzione consisteva nel spostare il controllo in un assieme separato. Bene, il mio è già in un'assemblea separata. La mia ipotesi è che sia in gioco qualcos'altro.

Non ho mai sentito parlare di PropertyArrayStart. La ricerca di questo restituisce solo alcune pagine relative alla serializzazione XAML. Cose interessanti, ma non molto d'aiuto.

Pensandoci, non riesco a pensare a proprietà di dipendenza nel framework con tipi di array. È permesso?

Ho anche provato a utilizzare un elemento nidificato anziché un'estensione di markup per Binding.

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

... ancora senza fortuna.

Tutte le idee sono benvenute!

risposta

38

E 'stata una movimentata 27 minuti ... :)

Cambiare il tipo di proprietà di dipendenza unit[]-IList<unit> risolto il problema. Meglio di tutto, non ha richiesto molte modifiche al codice dato che l'array implementa già quell'interfaccia.

Non sono sicuro se l'invio all'array tramite l'interfaccia (callvirt) sia più lento. La mia ipotesi è sì.

Il messaggio di errore originale indica che c'è qualcosa che accade qui che non capisco. Accetterò qualsiasi risposta che lo spieghi correttamente.

+1

sei il mio eroe. :) –

+1

Apprezzo anche la risposta. Io e tutti gli altri stavamo per passare un po 'di tempo a cercare di capirlo. Una rapida ricerca StackOverflow è stata piacevole da trovare a mezzanotte. +1 – TravisWhidden

Problemi correlati