2010-09-08 3 views
1

J'ai une configuration assez simple que je ne peux pas obtenir de travailler dans silverlight. J'ai une commande avec une collection de OrderPayments. Ces objets font partie d'un modèle Entity Framework et sont exposés via les services WCIA RIA. Je peux me lier parfaitement à n'importe quelle propriété de base sur la classe Order, mais je voulais me lier à une listbox pour montrer les OrderPayments. Voici le XAML pour le ListBox. Rien n'apparaît dans la liste et il y a au moins un OrderPayment pour la commande affichée. orderDataSource est une DomainDataSource qui contient l'Ordre. La chose étrange à ce sujet est que je ne reçois pas d'erreurs de liaison et quand je lie à un TextBlock en utilisant le code suivant:Impossible de lier la collection enfant dans silverlight

<TextBlock Text="{Binding Data.OrderPayments, ElementName=orderDataSource}" /> 

Le texte « OrderPayment » est à l'écran émis. Y at-il quelque chose de différent que je dois faire pour que Silverlight prenne réellement la référence à l'objet?

Tout le XAML ci-dessous:

<riaControls:DomainDataSource AutoLoad="True" Name="orderDataSource" QueryName="GetOrder"> 
     <riaControls:DomainDataSource.QueryParameters> 
      <riaControls:Parameter ParameterName="orderid" Value="1" /> 
     </riaControls:DomainDataSource.QueryParameters> 
     <riaControls:DomainDataSource.DomainContext> 
      <ds:CEWCPSDomainContext /> 
     </riaControls:DomainDataSource.DomainContext> 
    </riaControls:DomainDataSource> 

    <StackPanel Orientation="Vertical" Margin="12"> 
     <StackPanel Orientation="Horizontal"> 
      <Button Width="100" Height="50" Content="Save &amp; Return" Margin="0,0,12,12" /> 
      <Button Width="100" Height="50" Content="Orders" Margin="0,0,12,12" /> 
      <Button Width="100" Height="50" Content="Emails" Margin="0,0,12,12" /> 
     </StackPanel> 

     <StackPanel Orientation="Horizontal"> 
      <dataForm:DataForm x:Name="dataForm1" Header="Order Contact Information" 
         AutoGenerateFields="False" AutoEdit="False" AutoCommit="False" 
         CurrentItem="{Binding Data, ElementName=orderDataSource}"> 
       <dataForm:DataForm.EditTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <StackPanel> 
         <dataForm:DataField Label="First Name"> 
          <TextBox Text="{Binding FirstName, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }" /> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Last Name"> 
          <TextBox Text="{Binding LastName, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Organization"> 
          <TextBox Text="{Binding Organization, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Phone"> 
          <TextBox Text="{Binding Phone, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Fax"> 
          <TextBox Text="{Binding Fax, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Email"> 
          <TextBox Text="{Binding Email, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Address 1"> 
          <TextBox Text="{Binding Address1, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="Address 2"> 
          <TextBox Text="{Binding Address2, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="City"> 
          <TextBox Text="{Binding City, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <dataForm:DataField Label="State"> 
          <TextBox Text="{Binding State, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
         <StackPanel Orientation="Horizontal" Width="Auto"> 
          <dataForm:DataField Label="Zip code"> 
           <TextBox Text="{Binding Zip, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
          </dataForm:DataField> 
          <dataForm:DataField> 
           <TextBox Text="{Binding Zip4, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
          </dataForm:DataField> 
         </StackPanel> 
         <dataForm:DataField Label="Country"> 
          <TextBox Text="{Binding Country, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True }"/> 
         </dataForm:DataField> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </dataForm:DataForm.EditTemplate> 
      </dataForm:DataForm> 

      <StackPanel Orientation="Vertical"> 
       <TextBlock FontWeight="Bold" FontSize="16" Text="Order Total/Payments" /> 
       <TextBlock > 
        <Run Text="Order Total:" /> 
        <Run Text="{Binding Data.OrderTotal, ElementName=orderDataSource}" /> 
       </TextBlock> 
       <TextBlock Text="Payments" /> 
       <TextBlock Text="{Binding Data.OrderPaymentItems, ElementName=orderDataSource}" /> 
       <ListBox ItemsSource="{Binding Data.OrderPayments, ElementName=orderDataSource}"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Amount}" /> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 

      </StackPanel> 
     </StackPanel> 
    </StackPanel> 
+0

Qu'est ce qui déclenche la charge de votre DomainDataSource? Vous êtes seulement lié à la collection sur le DomainDataSource * qui sera rempli à un certain point *. Si cela est fait dans code-behind, veuillez fournir quelques conseils :) –

+0

Il est déclaratif dans le code XAML. La commande est bien chargée et tous les autres champs sont affichés sur le formulaire. Juste cette collection enfant ne semble pas vraiment contenir d'objets, elle semble juste avoir un nom de l'objet qu'elle contient. – Josh

+0

Dans ce cas pouvez-vous fournir plus de XAML? Le problème avec les bindings est qu'ils n'affichent rien s'il n'y a pas d'élément de liaison correspondant, ce qui pourrait être aussi simple qu'une faute de frappe si votre liste est vide. –

Répondre

1

WCF RIA Services ne comprend pas les entités enfant par défaut. J'avais besoin de mettre [Include()] sur la propriété OrderPayments de l'objet Order. ça fonctionne parfaitement maintenant.

+0

Cela vaut certainement un +1. Heureux que vous l'avez trouvé :) –

+0

J'ai le même problème à http://stackoverflow.com/questions/3764924/chart-control-not-showing-series même si j'ai "inclus" mes entités enfants comme [Inclure] [ Association ("Server_RamInfos", "Name", "ServerName")] public Liste RamInfo {get; ensemble; } mais {Liaison RamInfo.Name} ou .Value vient comme nul ... des pensées ?? – Sunit

Questions connexes