2010-03-15 22 views
2

Je suis l'auteur des classes personnalisées que je voudrais créer en utilisant XAML:Silverlight 4 XAML Collections

<Grid Width="300" Height="300"> 
    <l:DashboardTable> 
     <l:DashboardTable.DashboardTableQuery> 
      <dq:DashboardTableQuery 
       ConnectionString="Data Source=bunkerhill;Initial Catalog=emgov_data;User Id=emgovadmin;[email protected]$$word;" 
       Query="select datename(month, cr_tb_DateDue) AS Month, sum(cr_tb_AmountTransaction) AS Total from cr_tb_transactionbill where Year(cr_tb_DateDue) = 2005 and Month(cr_tb_DateDue) IN (1,2,3,4) group by datename(month, cr_tb_DateDue)" 
       > 
       <dq:DashboardTableQuery.DataColumns> 
        <dq:DataColumn ColumnName="Month" ColumnOrder="0" Label="Month" /> 
        <dq:DataColumn ColumnName="Total" ColumnOrder="1" Label="Total" /> 
       </dq:DashboardTableQuery.DataColumns> 
      </dq:DashboardTableQuery> 
     </l:DashboardTable.DashboardTableQuery> 
    </l:DashboardTable> 
</Grid> 

Le problème est que je reçois un XamlParseException lorsque je tente de lancer cette XAML. J'ai déterminé qu'il est quand il arrive à l'élément dq: DataColumn. Il semble que cela n'arrive que lorsque j'ai une propriété qui a ensuite une collection, puis plusieurs éléments de la collection que je reçois ce problème.

Est-ce que quelque chose a rencontré quelque chose de similaire? Je suis essayer de réaliser tout cela dans XAML déclarative.

+0

Pourriez-vous plus de détails sur l'exception? Quel type a la propriété 'DataColumns'? – AnthonyWJones

Répondre

1

Il y a plusieurs choses auxquelles je peux penser pour que le post Xaml fonctionne.

  • Le DashboardTableQuery doit créer une instance de la collection qui est ensuite exposée comme la propriété DataColumns. Le type de collection exposé par DataColumns doit implémenter IList.
+0

Merci pour votre réponse. La propriété DataColumns sur l'objet DashbboardTableQuery a un champ qui est une nouvelle liste (). Je pense que cela satisferait aux deux conditions pour que le Xaml fonctionne. Une autre mise en garde est que le modèle d'objet provient d'un service WCF via une référence Web. – mattduffield

+0

@mattduffield: Si c'est vraiment un "champ", changez-le en propriété. Pour que votre xaml fonctionne, il devrait s'agir d'une propriété en lecture seule ou au moins d'une propriété dont la collection est initialisée et prête à contenir des éléments. – AnthonyWJones

+0

Il s'agit d'une propriété dont le champ qui est en train d'être enveloppé est défini par défaut sur une nouvelle liste (). Désolé pour la confusion. Je suis d'accord que cela pourrait être une propriété en lecture seule. – mattduffield