Note that there are some explanatory texts on larger screens.

plurals
  1. POLarge application design (WPF/Silverlight)
    primarykey
    data
    text
    <p>Aside from the MVVM, as well as MVC patterns for the overall structure of a WPF app, how exactly do you break up the model/controller aspect of an app into subcomponents? The reason I ask is that I have no problem architecting the solution from the perspective of the patterns mentioned above, but when it comes to actually writing the backend; I feel that i'm fudging a lot of it. I end up with high quality apps from the user perspective, but my design asthetics don't allow me accept this. </p> <p>To clarify; a lot of my business logic cannot be refactored into a class (or class hierarchy, with all associated interfaces) in any easy or meaningful way without having to change the entire app. I've been developing professionally for a year and a half now, so it may be an issue of inexperience; but I feel that it's still no excuse. Any pointers to this admittedly open ended question?</p> <p>Edit: code request (in Silverlight)- The following is a -snippet- from a mousebuttonup handler in a drag-drop allocation application that's part of a much larger app- </p> <p>I just really don't like how blunt the logic is, and hate the way that it's all completely unfactorable, since everything is getting stuffed into event handlers.</p> <pre><code> //determine if there is a previously existing allocated sale corresponding to this purchase's ID SaleWS allocSaleExisting = colltoaddsale.FirstOrDefault(s =&gt; (s.p_TRADEID == allocPurch.TRADEID)); if (allocSaleExisting != null &amp;&amp; allocSale.TRADEID == allocSaleExisting.TRADEID) { PurchaseWS allocPurchExisting = colltoadd.First(p =&gt; 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); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload