2011-12-26 29 views
1

我有一个类患者,每个患者可以有零个或一个地址,每个地址有一个患者。我遵循这个Walkthroug,他们首先使用实体​​框架和代码。在WPF窗口中拖动Patient数据源将创建一个带有Patient CollectionViewSource的网格,就像本教程中的Department一样。我现在的问题是,我无法将Address数据源添加到窗口,就像他们在教程中使用Courses属性(他们在那里有一对多的关系)。从病人的地址属性之类的灰色:wpf与一对一关联(实体框架)的数据绑定细节

enter image description here

我试图通过路径中的XAML添加一个地址属性:

<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异常,指出“双向绑定需要路径或XPath”。我猜为什么我不能将地址数据源拖到窗口上的原因是,我们没有在这里处理标准的1:n关系。

有人可以告诉我如何让程序自动创建(并坚持)一个新的地址实例连接到正确的患者,只要我输入街道名称?

回答

1

我想通了。一个人必须扩大地址,然后单击详细信息:

enter image description here

在这之后它拖动。

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