Skip to main content

Wpf, TreeView and Mvvm: Conceptual Findings (Part 1)

I have read a lot of articles, comments and how To's (see below for a brief list of links) about the use of MVVM with TreeView (WPF & C#), but none of them convince me for the proof of concept that i have in mind. Why? Because i think that the Drag & Drop operation is, only, a View Operation.

As i understand the MVVM is like:
  •  Model: Data and data extract/insert operations
  • ViewModel: Commands, Main Logic and so on...
  • View: User Experience
After defining the concepts, i want to note something: the view can be a console application, a web page, a window application or a touch application. I'm not sure that if the view is a console app, there must be commands to handle the drag and drop operations like Sparky at al mentioned (we can have an interface defining the ViewModel and a lot of pairs classes (View & ViewModel), but then, where is the re usability of the code?)

Let me be clear about something, the idea of Sparky is very interesting (and clear) so it was the model that i choose... until the thought of "... this doesn’t belong to here (talking about the drag and drop commands and the ViewModel)" came to my mind. How can be this be done in a simple way? (And maintaining the concepts isolated?) What the drag and drop operation main idea is (for this proof of concept)? And like most of the question, there is not a single answer for them, but i will try to write down one not-optimized simple answer with three parts that worked for me:
  1. Defining [ViewModel Move] Operation
  2. The drag and drop events using [DataObject Data] = (node)=>{ [[self DataContext] Move source:=source, target:=node]}
  3. When the drop operations end in the target, use the function to do the node moving.
I think that is enought for the conceptual talking. I'll post the code later.

Have a nice thinking,

Some links to read:
  • sparky.dasrath
  • Bea Stollnitz (This is works like a charm... with List, not with TreeView, like he/she stated)
    • binary-studio.com (For me is just a implementation/example of the Bea code, i can be wrong)
  • CodeProject (I dont remeber what articles but there were some of them)

Comments

Post a Comment

Popular posts from this blog

Use fastJSON with WCF (C#)

To use fastJson Serializer with WCF Web Service: Within a Web Site or App Project (VS), Add AjaxService Add: Method: Get, Use: Only to retrieve Data [ OperationContract ] [ WebGet (ResponseFormat = WebMessageFormat .Json)] public Stream TestStream( string ticker) { WebOperationContext .Current.OutgoingResponse.ContentType = "application/json" ; string jsonString= "{\"d\":{}}" ;//Here you do the serialization MemoryStream ms = new MemoryStream ( ASCIIEncoding .Default.GetBytes(jsonString)); return ms; } Method: Post, Use: Insert data / data manipulation [ OperationContract ] [ WebInvoke (Method= "POST" , ResponseFormat = WebMessageFormat .Json)] public Stream TestStream( string ticker) { WebOperationContext .Current.OutgoingResponse.ContentType = "application/json" ; string jsonString= "{\"d\":{}}" ;//Here you do the serialization MemoryStream ms = new MemoryStream ( ASCIIEncoding .Def