2010-09-01 6 views
1

J'ai 2 tables principales et Maintest. J'utilise nhibernate pour extraire des données de la base de données et je joins 2 tables pour aller chercher les champs des deux. Maintenant, mon dernier objet a des données des deux tables. Maintenant, quand je débogue mon application, je peux voir que j'ai 2 enregistrements de Main et 5 enregistrements de Maintest. Mais de toute façon, je ne suis pas en mesure d'afficher les enregistrements de Maintest.WPF XAML Liaison

<DataTemplate x:Key="myTaskTemplate"> 
      <StackPanel Orientation="Vertical"> 
       <TextBlock Text="{Binding FirstName}"/> 
      </StackPanel> 
     </DataTemplate> 

</Window.Resources> 
<StackPanel> 
    <ListBox ItemsSource="{Binding Main}" ItemTemplate="{StaticResource myTaskTemplate}" Height="200" Width="200" /> 

    <toolkit:DataGrid ItemsSource="{Binding Main.Maintest}" Margin="3" 
          AutoGenerateColumns="False" 
          CanUserAddRows="False" CanUserDeleteRows="False" 
          CanUserReorderColumns="False" CanUserResizeRows="False"> 
     <toolkit:DataGrid.Columns> 
      <toolkit:DataGridTextColumn Header="#" 
              Binding="{Binding Number}"/> 
      <toolkit:DataGridTextColumn Header="Airline" 
              Binding="{Binding Code}"/> 

     </toolkit:DataGrid.Columns> 
    </toolkit:DataGrid> 
</StackPanel> 

NHibernate Mapping: 
<class name="Main" lazy="false"> 
     <id name="ID" type="Int32"> 
      <generator class="native"/> 
     </id> 
<set name="Maintest" inverse="true"> 
      <key column="Ticket" on-delete="cascade" /> 
      <one-to-many class="Segment" /> 
     </set> 

.... Je mesure d'afficher record listbox mais pas les dossiers de la boîte à outils. Bien que je puisse voir que pour chaque enregistrement principal mon objet a 3 enregistrements ou plus dans Maintest.

Répondre

1

Quelque chose ne correspond pas ...

ListBox.ItemsSource prend un IEnumerable de quelque sorte - ce qui signifie que la propriété principale doit être une sorte de IEnumerable?

Donc, si ce que vous cherchez est une sorte de vue maître-détail - vous devez changer le XAML pour les deux contrôles comme celui-ci - tout le reste devrait être bien:

<ListBox Name="Main" .../> 
<toolkit:DataGrid ItemsSource="{Binding SelectedItem.Maintest,ElementName=Main}" .../> 

Cette volonté rendre le DataGrid lié à la propriété MainTest de n'importe quel objet est sélectionné dans le ListBox.

Regardez vers Bea Costa si vous avez vraiment besoin de vous époustoufler avec les scénarios Master-Detail.

Espérons que cela aide!