作者opdtk (拥抱失败)
看板C_Sharp
标题[问题] WPF DataGrid 自定义与继承的问题
时间Tue Jan 7 08:20:46 2020
最近遇到公司的需求需要继承元件
虽然这样的设计逻辑似在网路爬文但目前没有找到比较好的解法。小弟感觉测试方面与耦合性都有很明显的缺点。使用起来继承性很差,有用了Dependency Property试着去写,但仍然遇到了一些问题
例子一:
鸟:会飞的动物
台湾鸟:鸟
美国鸟:鸟
欧洲鸟:鸟
韩国鸟:鸟
.
.
.
需求:假设发生了基因突变,鸟都变成6只脚,让所有国家的鸟都有办法继承,因为国家很多...所以要找一个方式不要去每个国家改。
实际的例子:假设订单模组下的
有好几二三十几个表单会同时使用同一组资源底下的DataGrid。该DataGrid的Column有金额、单价、数量等约末二十、三十栏位。每个栏位都预先写好了大部分共同的行为、操作。
需求:
表单一和大多数表单:的情况下是单价*数量=金额
表单二:是单价*数量*0.9(加权)=金额
表单三:单价*数量*0.8(加权)=金额
作
以上是一种行为的例子,比较像是overwrite的概念
问题:
假设今天欲在DataGrid上加入一个新的栏位: 「如产品名称」
1.该Cell点击可以开启一个产品详情视窗(open new window)
2.输入完「产品编号」後自动带出「产品名称」以及对应其他栏位的预设值,例如「仓库栏位」为预设仓
包括许多复杂的业务逻辑已经写好了。有没有方式让每一个表单都有办法去套用(继承)这个?因而不去改变每一个View和Viewmodel?
请问上述情况如何保持覆写的弹性?在wpf上有没有什麽样的做法可以更好的解决这样子的需求?
先感谢大神们。
-----
Sent from JPTT on my iPhone
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.216.100.61 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1578356448.A.7E0.html
1F:→ testPtt: 我会习惯改VM加prop 如果不想改cs内容可以另外开partial 01/07 08:35
谢谢你的建议,大多数看到的方式也是这样解决的,我会朝这个方向去写
2F:推 s4300026: 深入浅出 设计模式 01/07 18:33
我了解这种设计模式,但也有一种模式是减少重复code的一派。 这种自制元件以及重复使用看起来似乎无解,谢谢你的回覆
如果遇到表单使用同一个元件很凶的情况下也必须取舍这种模式
3F:推 s4300026: datagridview的callback呼叫你的权重处理class,即把ui 01/07 18:38
4F:→ s4300026: 和功能分开,不要把功能写在callback中 01/07 18:38
※ 编辑: opdtk (49.216.100.61 台湾), 01/08/2020 00:29:14
※ 编辑: opdtk (49.216.100.61 台湾), 01/08/2020 00:35:53
※ 编辑: opdtk (49.216.100.61 台湾), 01/08/2020 00:40:00