WPF在MVVM项目中的DataContext中访问DataSet。我怎么做?

时间:2013-10-26 02:18:22

标签: c# wpf mvvm dataset

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

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

如果我将View DataContext 设置为 PatientData.Patient ,则网格中的字段会显示患者数据,但接着显示我的绑定CONTROLS(下一个/上一个/第一个/最后一个) ) 不工作。如果我将 DataContext 设置为 ViewModel ,我的绑定控件可以正常工作,但 DATASET 却没有。

我相信我需要将包含患者绑定控件的 DataContext 的网格设置为 PatientData.Patient 但是我无法弄清楚如何。

所以我将View DataContext 设置为 ViewModel 我的所有控件都有效,现在我如何引用 PatientData.Patients 数据集 ViewModel 的一部分?

这是病人的班级

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]

所以我接近这个错误,或者我走的是正确的道路,但我的代码搞砸了?

我有患者的数据集数据和我在代码中随身携带的ObservableCollection患者。

0 个答案:

没有答案