更改 API 数据网格绑定的响应对象名称(在模型中)

Change API response Object name (in Model) for Datagrid binding

我正在使用 WPF,而且还比较新。 我还没有跳到 MVVM,仍在努力思考它。

我目前有一个小应用程序,它从 4 个不同的来源(在不同的时间)提取数据,然后将其显示在数据网格上。 问题是来自响应的数据模型不同,我希望能够轻松使用相同的数据网格。

EG。 Datagrid 绑定到模型 [zephyrPatientData] 名字:绑定到名字 姓氏:绑定到姓氏

其中一个提取物具有: 名字 = 名字; lastName = 姓氏。

因此,如果我使用此数据并尝试绑定到数据网格,则不会填充 LASTNAME 文件,因为该模型没有 lastName,它有姓氏。

下方:正在使用数据网格的数据模型。

public class zephyrPatientData
{
    public int CustomerID { get; set; }
    public int ClaimID { get; set; }
    public string ChemistID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ClaimNumber { get; set; }
    public bool concern { get; set; }
    public int? InsCompID { get; set; }
    public string InsCompName { get; set; }
    public int? EmployerID { get; set; }
    public string EmployerName { get; set; }
    public string DateOfInjury { get; set; }
    public string dateOfBirth { get; set; }
    public string Address { get; set; }
    public int? SuburbID { get; set; }
    public string SuburbName { get; set; }
    public string Postcode { get; set; }
    public string custPhone { get; set; }
    public int? claimTypeID { get; set; }
    public string InvoiceTo { get; set; }
    public string Comments { get; set; }
    public string ClaimManager { get; set; }
    public string Injury { get; set; }
    public bool activeClaim { get; set; }
    public string ClaimManagerEmail { get; set; }
    public int? LawyerID { get; set; }
    public string LawyerCompany { get; set; }
    public double? outstandingScripts { get; set; }
    public double? outstandingValue { get; set; }

    public string dispenseConnected { get; set; }

    public string dispenseID { get; set; }


}

下方:我想使用数据网格的数据模型。

public class zDispensePatientData
    {
        public string id { get; set; }
        public int clientNo { get; set; }
        public string firstName { get; set; }
        private string surname;
        
        public string lastName
        {
            get
            {
                return surname;
            }
            set
            {                
                    surname = value;
            }
        }
        public string title { get; set; }
        public object licenseNo { get; set; }
        public string sex { get; set; }
        public object dateOfBirth { get; set; }
        public object postalAddress { get; set; }
        public object postalSuburb { get; set; }
        public object postalState { get; set; }
        public object postalPostCode { get; set; }
        public string homeAddress { get; set; }
        public string homeSuburb { get; set; }
        public string homeState { get; set; }
        public string homePostCode { get; set; }
        public string phoneNumber { get; set; }
        public string mobileNumber { get; set; }
        public object faxNumber { get; set; }
        public string email { get; set; }
        public DateTime lastModified { get; set; }
        public bool active { get; set; }
        public bool deceased { get; set; }
    }

如您所见...我尝试使用 get;set; [zDispensePatientData] 部分但是我不知道如何正确使用它。 实际上,用 laman 的术语来说,我希望它从 API 响应中读取姓氏,然后可以作为 lastName 访问以在 Datagrid 中使用。

这样做的原因是将有另外 4 个 [zDispensePatientData](其他名称)并且它们都有不同的字段名称但最后我需要它们在同一个数据网格中工作而不改变每个单独的绑定数据网格列。

编辑:扩展问题:

所以我很感谢您的回复,但我不太了解如何完成这项工作。

如果我要删除所有模型字段并只留下... 3:

我的任务是将 5 个不同的模型(来自 API 的回复)'allocate' 到我自己的模型。

例如

<my model>
public string id { get; set; }
public string lastName { get; set; }
public string firstName { get; set; }

<model API 1>
public string id { get; set; }
public string patientLastName { get; set; }
public string patientFirstName { get; set; }

<model API 2>
public string patientid { get; set; }
public string surname{ get; set; }
public string FIRSTNAME{ get; set; }

任何应用程序都只会有一个连接 ([dispenseType])。

所以我想我需要的是检查用户 dispenseType,然后使用他们正在使用的 API 中的模型。

或者是否可以根据其他模型的内容设置myModel。

例如。 如果 API1.firstName = 空 myModel.firstName = api2.FIRSTNAME

我的主要问题是我不知道要问的概念或问题。如果有指向我要实现的目标的术语的指针,我很乐意出去学习它来实现它。

如果 DataGrid 中的列绑定到名为“LastName”的 属性,您需要确保 IEnumerable<T> [=] 中的类型 T DataGrid的15=]有这么一个属性.

因此,像您目前所做的那样,在 zDispensePatientData class 中添加一个:

public string LastName
{
    get => surname;
    set => surname = value;
}

另一个选项是将 ItemsSource 设置或绑定到 IEnumerable<ViewModel>,其中 ViewModel class 具有 DataGrid 期望的属性。

然后您可以将每个 zephyrPatientData and/or zDispensePatientData 对象翻译成 ViewModel,例如:

sourceCollection = zDispensePatientDatas
    .Select(x => new ViewModel() { LastName = x.Surname } );

How to map properties of two different objects? 这个问题回答了我的问题,但用比我更好的方式陈述