使用实体框架的WPF中的主要细节

时间:2014-04-17 21:46:58

标签: wpf entity-framework data-binding

我有两个ListBoxes。我试图在它们之间建立一个主 - 细节关系。

因此,TYPE_MASTER和TYPE_DETAIL都是EF实体。 TYPE_MASTER有一个名为TYPE_DETAIL的属性,它是相关TYPE_DETAIL实体的集合。 ListBox1的ItemsSource绑定到ObservableCollection,ListBox2的ItemsSource绑定到ListBox1的SelectedItem的TYPE_DETAIL属性。

问题是SelectedItem返回一个对象而不是TYPE_MASTER,因此我对ListBox2的绑定告诉我它无法解析类型为object的数据上下文中的TYPE_DETAIL属性。如何将ListBox2的itemssource绑定到ListBox1的SelectedItem上的TYPE_DETAIL集合?

注意 - 我不能直接引用实体的对象类型,因为它们存在于DAL中,我们有一个严格的公司策略来反对从表示层到DAL创建依赖关系。

我的代码:

    <StackPanel Name="SpMaster" Orientation="Vertical" Grid.Row="0" ToolTip="{Binding Source={x:Static robertGlobals:Messages.SelectMaster}}">
        <TextBlock Name="TxtbMaster" Style="{StaticResource HeadingFourBrown}" Text="Masters" Grid.Row="0"></TextBlock>
        <ListBox Name="ListMaster" ItemsSource="{Binding PageModel.PageSelection.Masters}" Style="{StaticResource ClearListbox}"
                 DisplayMemberPath="DESCRIPTION">
        </ListBox>
    </StackPanel>
    <StackPanel Name="SpDetail" Orientation="Vertical" Grid.Row="1" ToolTip="{Binding Source={x:Static robertGlobals:Messages.DragDetail}}">
        <TextBlock Name="TxtbDetails" Style="{StaticResource HeadingFourBrown}" Text="Available Details" Grid.Row="0"></TextBlock>
        <ListBox Name="ListDetails" ItemsSource="{Binding ElementName=ListMaster, Path=SelectedItem.TYPE_DETAIL}" 
                 Style="{StaticResource ClearListbox}" DisplayMemberPath="NAME"></ListBox>
    </StackPanel>

1 个答案:

答案 0 :(得分:0)

简单回答:一切都配置正确,但DisplayMemberPath引用了错误的字段名称。纠正了这一切,一切都清理完了。这是简单的事情。