2010-09-01 123 views
1

我有2个表Main和Maintest。我使用nhibernate从数据库中提取数据,并且连接两个表以从两个表中获取字段。现在,我的最终对象具有来自两个表的数据。现在,当我调试我的应用程序时,我可以看到Main有2条记录,Maintest有5条记录。但不知何故,我无法显示来自Maintest的记录。WPF XAML绑定

<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> 

.... 我能够显示列表框记录,但没有工具的记录。虽然我可以看到对于每个Main记录,我的对象在Maintest中有3个或更多记录。

回答

1

东西划不来了......

ListBox.ItemsSource需要某种类型的IEnumerable的 - 这意味着该属性主要必须是某种IEnumerable的呢?

所以,如果你正在寻找的是一个主从一种观点 - 你需要更改XAML两个控制这样的 - 一切应罚款:

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

这将使DataGrid绑定到ListBox中选定任何对象的MainTest属性。

查找到Bea Costa如果你真的需要得到漂亮与主详细方案。

希望这会有所帮助!