2009-06-12 26 views
6

WPVMアプリケーションの全体構造のMVVMパターンと同様に、アプリケーションのモデル/コントローラの側面をサブコンポーネントにどの程度正確に分割しますか?私が尋ねる理由は、上記のパターンの観点からソリューションを設計することに問題はないが、実際にバックエンドを書くことになると、私はそれをたくさん食べていると感じています。私はユーザーの視点から高品質のアプリケーションに終わるが、私のデザインの魅力は私にこれを受け入れることができない。大規模なアプリケーションデザイン(WPF/Silverlight)

明確にする。私のビジネスロジックの多くは、アプリ全体を変更することなく、簡単で有意義な方法でクラス(またはすべての関連インタフェースを持つクラス階層)にリファクタリングすることはできません。私は1年半の間専門的に開発してきたので、未経験の問題かもしれません。私はまだそれが言い訳ではないと感じています。これについてのいかなる指針も、終了した質問を終わらせましたか?

編集:(Silverlightの)コード要求 - 次は私が本当に好きではない非常に大きなAPP-

の一部だドラッグアンドドロップの割り当てアプリケーションでmousebuttonupハンドラから-snippet-ですロジックがどれほど鈍いのか、すべてが完全に解消されないように嫌いなのです。すべてがイベントハンドラに詰まっているからです。

 //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

実際のコード例がないとコメントするのは難しいです。 –

答えて

1

あなたはまたCaliburnをチェックする必要がありますなど、ビジネスロジックの問題を処理するために大規模なアプリケーションでWPF/SilverlightのMVVMを使用して、および方法など、この方に特に連動しています。

関連する問題