У меня есть Пациент класса, где у каждого пациента может быть ноль или один адрес, и у каждого адреса есть один пациент. Я следовал за этим Walkthroug , где они сначала используют структуру сущности и код. Перетаскивание источника данных пациента в окне WPF создает сетку с Patient CollectionViewSource, как в учебном пособии с Департаментом. Теперь моя проблема заключается в том, что я не могу добавить источник данных Address в окно, как они делают со свойством Courses в учебнике (у них там отношение один ко многим). Свойство Address у Patient серого цвета:
Я попытался добавить свойство Address через путь в 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». Я предполагаю, что причина, по которой я не могу просто перетащить источник данных Address в окно, заключается в том, что мы не имеем дело со стандартными отношениями 1: n.
Может кто-нибудь сказать мне, пожалуйста, как сделать так, чтобы программа автоматически создала (и сохранила) новый экземпляр адреса, который подключен к нужному пациенту, как только я введу название улицы?