作者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://www.ptt.cc/bbs/C_Sharp/M.1578356448.A.7E0.html
→ testPtt: 我會習慣改VM加prop 如果不想改cs內容可以另外開partial 01/07 08:35
謝謝你的建議,大多數看到的方式也是這樣解決的,我會朝這個方向去寫
推 s4300026: 深入淺出 設計模式 01/07 18:33
我瞭解這種設計模式,但也有一種模式是減少重複code的一派。 這種自製元件以及重複使用看起來似乎無解,謝謝你的回覆
如果遇到表單使用同一個元件很兇的情況下也必須取捨這種模式
推 s4300026: datagridview的callback呼叫你的權重處理class,即把ui 01/07 18:38
→ 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