gpt4 book ai didi

c# - 使用泛型的 WPF View / View 模型 - 如何?

转载 作者:行者123 更新时间:2023-12-03 10:30:54 25 4
gpt4 key购买 nike

WPF新手,请多多包涵...

假设我在 SQL 中有 2 个表:

  • 东西
  • 其他

  • 两者都有完全相同的字段:
  • ID(整数)
  • 姓名(字符串)
  • 描述(字符串)
  • IsActive (位/ bool )
  • 修改日期(日期时间)

  • 所以,我想创建一个模型(不是两个)并做这样的事情:
    BaseModel<T>() 
    {
    public int ID {get;set;}
    ...
    }

    等等(当然,使用 INotifyPropertyChanged ,只是试图保持代码简单)。

    我希望能够创建一个 BaseViewBaseViewModel这适用于任何符合 Thing/OtherThing 的模型.

    我真的不知道该怎么做才能使这个通用,所以我不必有 ThingView/ThingViewModelOtherThingView/OtherThingViewModel ...

    似乎这应该很简单,但我似乎无法弄清楚。有没有人有一个代码示例,他们可以使用一个 View 、一个 ViewModel 和一个基本数据模型(并从下拉列表中切换类型)交换下拉列表中的各种项目?

    例如,一个组合框有 3 个相同的表结构
  • 东西
  • 其他
  • 某事

  • 并且在选择更改时,我想从选择的任何表中提取数据,以便能够对这三个表中的任何一个执行标准的 CRUD 操作,而无需为每个 View / View 模型创建具体的类。

    最佳答案

    I am really at a loss as to what to do here to make this generic



    不你不是。你刚刚描述了你应该做什么:
    public class ThingBase
    {
    protected abstract string TableName { get; }
    public int ID { get; set; }
    public string Description { get; set; }
    ...
    }

    public class Thing : ThingBase
    {
    protected override string TableName { get { return "Thing"; } }
    }

    public class OtherThing : ThingBase
    {
    protected override string TableName: { get { return "OtherThing"; } }
    }

    现在您有两个类,除了它们存储数据的表之外,它们在所有方面都是相同的。您只需决定在创建实例时要使用哪个类。

    您可以在 View 模型中使用相同的技巧,但您可能不需要在 View 模型子类中实现任何成员。现在您可以展示 ThingOtherThing通过创建 DataTemplate 在完全不同的 View 中对于 ThingViewModelOtherThingViewModel类型。或者,如果您希望它们具有相同的 View ,只需为 ThingViewModelBase 创建一个模板即可。类型。 (如果 View 模型中的子类具有完全相同的 UI,您甚至可能不需要它们,尽管稍后改变主意很简单。)

    上周开始我从头开始了一个项目,到周五它已经有 53 节课了。这实际上导致代码比我使用更少的类时更简单、更可靠、更容易理解。

    关于c# - 使用泛型的 WPF View / View 模型 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2679889/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com