[問題] WPF DataGrid 自定義與繼承的問題

作者: opdtk (擁抱失敗)   2020-01-07 08:20:46
最近遇到公司的需求需要繼承元件
雖然這樣的設計邏輯似在網路爬文但目前沒有找到比較好的解法。小弟感覺測試方面與耦合性都有很明顯的缺點。使用起來繼承性很差,有用了Dependency Property試著去寫,但仍然遇到了一些問題
例子一:
鳥:會飛的動物
台灣鳥:鳥
美國鳥:鳥
歐洲鳥:鳥
韓國鳥:鳥
.
.
.
需求:假設發生了基因突變,鳥都變成6隻腳,讓所有國家的鳥都有辦法繼承,因為國家很多...所以要找一個方式不要去每個國家改。
實際的例子:假設訂單模組下的
有好幾二三十幾個表單會同時使用同一組資源底下的DataGrid。該DataGrid的Column有金額、單價、數量等約末二十、三十欄位。每個欄位都預先寫好了大部分共同的行為、操作。
需求:
表單一和大多數表單:的情況下是單價*數量=金額
表單二:是單價*數量*0.9(加權)=金額
表單三:單價*數量*0.8(加權)=金額

以上是一種行為的例子,比較像是overwrite的概念
問題:
假設今天欲在DataGrid上加入一個新的欄位: 「如產品名稱」
1.該Cell點擊可以開啟一個產品詳情視窗(open new window)
2.輸入完「產品編號」後自動帶出「產品名稱」以及對應其他欄位的預設值,例如「倉庫欄位」為預設倉
包括許多複雜的業務邏輯已經寫好了。有沒有方式讓每一個表單都有辦法去套用(繼承)這個?因而不去改變每一個View和Viewmodel?
請問上述情況如何保持覆寫的彈性?在wpf上有沒有什麼樣的做法可以更好的解決這樣子的需求?
先感謝大神們。
作者: testPtt (測試)   2020-01-07 08:35:00
我會習慣改VM加prop 如果不想改cs內容可以另外開partial
作者: s4300026 (s4300026)   2020-01-07 18:33:00
深入淺出 設計模式datagridview的callback呼叫你的權重處理class,即把ui和功能分開,不要把功能寫在callback中

Links booklink

Contact Us: admin [ a t ] ucptt.com