C# WPF访问MVVM项目中DataContext内的数据集。我该怎么做?

C# WPF访问MVVM项目中DataContext内的数据集。我该怎么做?,c#,wpf,mvvm,dataset,C#,Wpf,Mvvm,Dataset,我有一种感觉,这将是我错过的一件愚蠢的事情。这是我第一次尝试创建SQL Server数据库并使用C和WPF连接到它 我有一个视图,DataContext是ViewModel。在ViewModel中,我有一个PatientData.Patients数据集 如果我将View DataContext设置为PatientData.Patient,网格中的字段将显示患者数据,但我的绑定控件Next/Prev/First/Last不起作用。如果将DataContext设置为ViewModel,则绑定控件可以

我有一种感觉,这将是我错过的一件愚蠢的事情。这是我第一次尝试创建SQL Server数据库并使用C和WPF连接到它

我有一个视图,DataContext是ViewModel。在ViewModel中,我有一个PatientData.Patients数据集

如果我将View DataContext设置为PatientData.Patient,网格中的字段将显示患者数据,但我的绑定控件Next/Prev/First/Last不起作用。如果将DataContext设置为ViewModel,则绑定控件可以工作,但数据集不能

我认为我需要将包含Patients绑定控件的DataContext的网格设置为PatientData.Patient,但我不知道如何设置

因此,我将ViewDataContext设置为ViewModel所有控件都工作,现在如何引用作为ViewModel一部分的PatientData.Patients数据集

这是病人的级别

public class PatientRecord
{
    public int PatientID { get; set; }
    public string LastName { get; set; }
    public string LastFirstName { get; set; }
    public string FirstName { get; set; }
    public string FirstLastName { get; set; }
    public string Addr1 { get; set; }
    public string Addr2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
    public string Phone { get; set; }
    public DateTime DOB { get; set; }
    public string MaritalStatus { get; set; }
    public string Sex { get; set; }
    public string Race { get; set; }
    public bool HealthIns { get; set; }
    public bool OutsidePCP { get; set; }
    public string PrimaryCareProvider { get; set; }
    public object Modified { get; set; }
}
我有一个数据集,我从匹配患者记录的被调用患者中提取数据,这样我就可以将数据读入记录。在“患者编辑”屏幕的构造器中,我将患者记录传递给当前选定的患者。我希望能够编辑当前记录,然后移动到其他记录

    public PatientMaintenanceViewModel( ObservableCollection<PatientRecord> patients, PatientRecord selectedPatient )
    {
        try
        {
            Patients = patients;
            SelectedPatient = selectedPatient;
            taPatients.Fill( dsPatient.Patients );
        }
        catch ( Exception ex )
        {
            MessageBox.Show( ex.Message, "PatientMaintenanceViewModel" );
            var errors = dsPatient.Patients.GetErrors();
        }
        taManager.PatientsTableAdapter = taPatients;

        //          DataContext = PatientData.Patient;
        View = (CollectionView)CollectionViewSource.GetDefaultView( dsPatient.Patients );
        MaritalStatuses = _patientRepo.GetMaritalStatuses();
        Races = _patientRepo.GetRaces();
    }
!![病人编辑界面][1]

那么,我是走错了路,还是走对了路,但我的代码被搞砸了


我在代码中有患者的数据集数据和可观察到的患者数据集。

您能分享您的代码吗?我们处理数据库的方式是我们有一个查询数据的服务器,因此我们必须在结构中携带数据,并从数据库中设置和获取数据。我对数据集有这样的感觉,你只需要在它的结构中使用数据,而不必在外部结构中复制结构。这是否正确?您的viewmodel是PatientData还是PatientData是viewmodel的成员?PatientData只是在代码中。我不确定我是否完全理解您的意思,但您应该将视图的DataContext设置为viewmodel。对于网格,将其ItemsSource属性设置为Patients。这还不够吗?