2009-06-12 96 views
6

除了MVVM以及WPF應用程序整體結構的MVC模式,您究竟如何將應用程序的模型/控制器方面分解爲子組件?我問的原因是,從上述模式的角度來看,我沒有任何問題設計解決方案,但是實際上是在編寫後端;我覺得我在欺騙很多。從用戶角度來看,我最終獲得了高質量的應用程序,但我的設計美學不允許我接受這一點。大型應用程序設計(WPF/Silverlight)

澄清;我的許多業務邏輯不能以任何簡單或有意義的方式重構爲類(或類層次結構,包含所有關聯的接口),而無需更改整個應用程序。我現在一直在專業開發一年半,所以這可能是一個缺乏經驗的問題;但我覺得這仍然沒有任何藉口。任何指向這個公認的開放式問題的指針?

編輯:代碼請求(在Silverlight) - 以下是從一個拖放應用程序分配一個MOUSEBUTTONUP處理程序-snippet-這是一個更大的APP-

我真的不喜歡的部分這種邏輯多麼直截了當,並且討厭它完全不合理的方式,因爲所有事情都被塞進了事件處理程序中。

 //determine if there is a previously existing allocated sale corresponding to this purchase's ID 

       SaleWS allocSaleExisting = colltoaddsale.FirstOrDefault(s => (s.p_TRADEID == allocPurch.TRADEID)); 


       if (allocSaleExisting != null && allocSale.TRADEID == allocSaleExisting.TRADEID) 
       { 
        PurchaseWS allocPurchExisting = colltoadd.First(p => p.TRADEID == allocPurch.TRADEID); 

        //allocPurchExisting.AMOUNT += allocPurch.AMOUNT; 
        allocSaleExisting.AMOUNT += allocSale.AMOUNT; 


        allocPurchExisting.AMOUNT += allocSale.AMOUNT; 
        allocPurch.AMOUNT -= allocSale.AMOUNT; 


        colltoaddsale.Remove(allocSale); 


        //colltoadd.Remove(allocPurch); 

       } 

       else 
       { 


        //Create new "split" item in the data source for the source table 
        PurchaseWS splitAllocPurch = new PurchaseWS { COMMODITY = allocPurch.COMMODITY, CONTRACTNUMBER = allocPurch.CONTRACTNUMBER, AMOUNT = allocPurch.AMOUNT - allocSale.AMOUNT, FORM = allocPurch.FORM, GRADE = allocPurch.GRADE, LOCATION = allocPurch.LOCATION, SHIP_DATE = allocPurch.SHIP_DATE, TRADEID = allocPurch.TRADEID, UNITS = allocPurch.UNITS }; 

        //update the source table's selecteditem datacontext with the target allocation id 

        allocPurch.s_TRADEID = allocSale.TRADEID; 

        allocSale.p_TRADEID = allocPurch.TRADEID; 

        allocPurch.AMOUNT = allocSale.AMOUNT; 




        colltoadd.Insert(colltoadd.IndexOf(allocPurch) + 1, splitAllocPurch); 







       } 


      } 
+0

很難評論,沒有任何實際的代碼示例。 – 2009-06-12 20:02:28

回答

5

查看模式和實踐組中的Composite Application Guidance

它是專門針對朝這個,包括在大規模應用中使用MVVM爲WPF/Silverlight以及如何處理業務邏輯的擔憂等