wpf数据绑定详细信息与一对一关联(实体框架)

时间:2011-12-26 00:26:40

标签: .net wpf entity-framework data-binding datasource

我有一个班级病人,每个病人可以有零个或一个地址,每个地址有一个病人。我遵循这个Walkthroug,他们首先使用实体​​框架和代码。在WPF窗口上拖动Patient数据源会创建一个带有Patient CollectionViewSource的网格,就像在Department的教程中一样。我现在的问题是我不能像在教程中使用Courses属性那样将Address数据源添加到窗口中(它们之间有一对多的关系)。来自Patient的Address属性有点灰显:

enter image description here

我尝试通过Xaml中的路径添加Address属性:

<Grid DataContext="{StaticResource patientViewSource}">
...
  <DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True"  ItemsSource="{Binding}" Name="patientDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" >
    <DataGrid.Columns>
      <DataGridTextColumn x:Name="lastNameColumn" Binding="{Binding Path=LastName}" />                
      <DataGridTextColumn x:Name="addressStreetColumn" Binding="{Binding Path=Address.Street}" />
    </DataGrid.Columns>
  </DataGrid>
...
</Grid>

结果是现有患者的街道显示为预期。但是,当我尝试通过将患者姓名和街道名称写入空白网格行来插入新患者和地址时,我会收到InvalidOperationException,说明“双向绑定需要Path或XPath”。我想我不能将地址数据源拖到窗口上的原因是,我们在这里没有处理标准的1:n关系。

有人可以告诉我,如果我输入街道名称,程序是否可以自动创建(并保留)连接到正确患者的新地址实例?

1 个答案:

答案 0 :(得分:1)

我明白了。一个人必须扩展地址,然后点击详细信息:

enter image description here

此后它可以拖动。

如果这是默认选择会更容易......