извлекать и отображать данные из разных таблиц в сетке данных - PullRequest
0 голосов
/ 24 апреля 2020

Здравствуйте, я новичок в 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>

Спасибо за Ваша помощь, и если у вас есть хорошие учебники, чтобы рекомендовать меня, я заинтересован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...