Здравствуйте, я новичок в wpf / mvvm, и мне было интересно, можно ли было получить в viewmodel и отобразить в таблице данных элементы из разных таблиц. Я объясняю, что у меня есть таблица пациентов, связанная с самой таблицей встреч, связанной с таблицей консультаций, связанной с таблицей рецептов, отношения между таблицами таковы:
- пациент и встреча имеют связь 1. .n
- встреча и консультация имеют отношение 1..1
- консультация и рецепт имеют связь 1..n
В моей сетке я хочу отобразить имя пациента, описание консультации и дата назначения.
Я попытался добавить свойства навигации между таблицами в модель, затем в моей viewModel я создал свойство ObservableCollection of Prescription, которому я назначил свой список рецептов, который я передал источнику ресурсов моей таблицы данных, но результат действительно озадачивает меня.
Моя модель представления:
private ObservableCollection<Prescription> _prescriptions;
public ObservableCollection<Prescription> Prescriptions
{
get
{
return _prescriptions;
}
set
{
if(_prescriptions != value)
{
_prescriptions = value;
NotifyPropertyChanged("Prescriptions");
}
}
}
public void Prescriptions_Load()
{
foreach (var pre in context.Prescriptions)
{
Prescriptions.Add(pre);
}
}
Мой вид:
<DataGrid Grid.Row="1" ItemsSource="{Binding Path=Prescriptions}"
AutoGenerateColumns="True" CanUserReorderColumns="False"
CanUserDeleteRows="False" SelectedItem="{Binding Path=SelectedOrdonnance}">
<DataGrid.Columns>
<DataGridTextColumn Header="Date" Binding="{Binding Date}" Width="*">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Consulation" Binding="{Binding Consultation.Description}" Width="*">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Patient" Binding="{Binding Consultation.Appointment.Patient.LastName}" Width="*">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Спасибо за Ваша помощь, и если у вас есть хорошие учебники, чтобы рекомендовать меня, я заинтересован.