|
See this link DragDrop databound[^]
Note the GetBoundItemFromPoint method which might help you.
|
|
|
|
|
I am trying to design our project in MVVM design pattern.
My doubt is where is fix the binding property class in ViewModel
or Model.
ThankYou
|
|
|
|
|
I am not actually sure I understand your question. You can have ViewModel as DataContext of the View. The view defines all the binding with respect to the DataContext. Does that answer your question ?
|
|
|
|
|
Thank you for the Replay
Here the bulk of data fetch from data base, So the Query class in
Model and that Result set class is ViewModel, so that result set is directly
binding to view class .
Or
The Result set class also in Model , that datas are return to the
another one collection class. that collection class is binding to the
View class
Which one is correct
Thank you...
|
|
|
|
|
My thoughts,
I would prefer the second method as the View should be independent of the Model. You have all your processing and business knowledge in the Model. You expose the data to View through the ViewModel. If you directly expose the Model to the View, the View won't be flexible to be used with some other Model in future. The point is, View should not be expected to know of Model, the ViewModel is responsible for everything it needs to know and do.
|
|
|
|
|
Thank you for Replay and explanation.
|
|
|
|
|
Appreciate the reply. It would be very beneficial if you invest some time and read through the excellent MVVM resources on the net. You would get a fair picture of the pros and cons of different approaches being taken and what best suits your need.
|
|
|
|
|
give some Path related to the MVVM design pattern
( if have code more useful to me )
Thank you
|
|
|
|
|
You will get abundant resources on the net. Here are some jems Josh Smith[^], Karl[^] to get you started.
|
|
|
|
|
ABitSmart has given you good advice.
In MVVM, your View never binds to the Model - it always binds to the ViewModel. There are many reasons for this, but the biggest one is that a well designed MVVM application should be testable without the view, so you can "poke" at the ViewModel to exercise it without having to mock up a view.
Similarly, your ViewModel shouldn't access the underlying data - that's the purpose of the model. The ViewModel exists solely to map between a view and a model - it's that simple. So, why do this? Why not map the view to the model? After all, you can test a model in isolation. Well, part of this is because the model exists solely to handle data - it shouldn't provide extensive validation of values, it shouldn't perform business logic, it shouldn't receive invalid values. The ViewModel isolates the model from potentially harmful changes due to user error.
I hope this helps to clarify some of the rationale behind MVVM, and why things are done where they are.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
MVVM really simplifies Testability. I developed a similar architecture named "Part-View-Contract" for the product I was working on two years ago. Acropolis was beta and couldn't depend on its release time frame. It had a Plugin architecure, where Part(as in model),View and Contract(as in ViewModel) dependency were specified as plugin's in a plugin file and the whole UI built up dynamically from the file. The whole idea was to add/remove components by just editing the plugin file. It's been a while now :>
|
|
|
|
|
|
i have an application that was done using silverlight, in which i have used WFC services to establish the comunication with my database (SQL 2008), i have no problem running the application from visual studio 2008 but at the moment of mounting the application in my IIS 7.0 server and try to do any action that requieres communication using the WCF services, it throws me the next error:
User agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)
Fecha: Wed, 25 Mar 2009 18:06:51 UTC
Message: Unhandled Error in Silverlight 2 Application Exception during operation. The result is invalid. Check InnerException for exception details. in System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary ()
in Chat.ServiceReference.isValidCompletedEventArgs.get_Result ()
in Chat.popIniciarSesion.validation_isValidCompleted (Object sender, isValidCompletedEventArgs e)
in Chat.ServiceReference.ServicesClient.OnisValidCompleted (Object state)
Line: 1
Char: 1
Code: 0
URI: http://localhost/Chat.WEB/ChatTestPage.aspx
|
|
|
|
|
Any more useful info in the InnerException?
Miraxz wrote: at the moment of mounting the application in my IIS 7.0 server
For the WCF service app:
If you're using web.config to configure the WCF services, make sure your app.config
that works in VS isn't overwriting your web.config if you're using VS to publish the app.
Make sure your svc file(s) are correct.
Are you able to hit your WCF service(s) directly from a URL in a browser?
For the ASP.NET with Silverlight app:
How are you configuring your service client endpoints?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
i have already tried to publish it from VS and also tried to copy the web application folder and neither of them has worked.
I also tried to open the service directly from the explorer and it seems to work fine, it shows the following message : "created a service".
Concerning the EndPoints i have them in basicHTTPBinding if that's what you mean, i have searched and don't see anymore for the innerException.
in fact.. something strange occurs.. i had executed mi application from visual studio at the moment of closing it the temporal asp server that it creates doesn't close, i didn't give it importance at all first but when i tried to run again my application, that i had mounted in my IIS it worked just perfectly. I stopped the temporal asp server and again it stopped working
I see no sense because I never connect to localhost using the port that gave me my temporary server asp...
|
|
|
|
|
Miraxz wrote: when i tried to run again my application, that i had mounted in my IIS it worked just perfectly. I stopped the temporal asp server and again it stopped working
That sounds like the WCF service isn't configured correctly.
Can you post the <system.serviceModel> section of your WCF service web.config
as well as the <system.serviceModel> section of the Silverlight app's
ServiceReferences.ClientConfig file (the published ones, not the ones in the Visual Studio
project)?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi!
in the web.config i have
<system.servicemodel>
<behaviors>
<servicebehaviors>
<behavior name="Chat.Web.ServicesBehavior">
<servicemetadata httpgetenabled="true" />
<servicedebug includeexceptiondetailinfaults="false" />
</behavior>
</servicebehaviors>
</behaviors>
<services>
<service behaviorconfiguration="Chat.Web.ServicesBehavior" name="Chat.Web.Services">
<endpoint address="" binding="basicHttpBinding" contract="Chat.Web.IServices">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.servicemodel>
in ServiceReferences.ClientConfig
<system.servicemodel>
<bindings>
<basichttpbinding>
<binding name="BasicHttpBinding_IServices" maxbuffersize="2147483647">
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basichttpbinding>
</bindings>
<client>
<endpoint address="http://localhost:49245/Services.svc" binding="basicHttpBinding">
bindingConfiguration="BasicHttpBinding_IServices" contract="ServiceReference.IServices"
name="BasicHttpBinding_IServices" />
</endpoint></client>
</system.servicemodel>
ServiceReferences.ClientConfig not found it in my application mounted at the IIS, I guess is in the .XAP of my IIS ... or... I am wrong?
thk again...
|
|
|
|
|
Miraxz wrote: I guess is in the .XAP of my IIS
I think you already found it, but just in case...
Yes, it should be
The xap is a zip file so you can extract/edit/etc. files in the xap just
like any other zip file.
Cheers,
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thk Mark!!!
the ServiceReference.ClientConfig was configured in precisely the wrong endpoint...
<client>
<endpoint address="http://localhost:49245/Services.svc" binding="basicHttpBinding">
bindingConfiguration="BasicHttpBinding_IServices" contract="ServiceReference.IServices"
name="BasicHttpBinding_IServices" />
</endpoint></client>
Change that line "http://localhost:49245/Services.svc"
for "http://localhost/Chat/Services.svc"
really thk!!! !!! !!! !!!
|
|
|
|
|
Cool!
Miraxz wrote: http://localhost/Chat/Services.svc
Don't forget that will only work for clients on the same machine the service is
running on
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I tried it the traditional C# way of:
public String test
{
get
{
return "hi";
}
set
{
button1.Content = value;
}
}
But the WPF designer didn't seem to be able to detect it, although I could still do it programatically.
What's the proper way of declaring a new property for a control?
Thanks.
|
|
|
|
|
That Asian Guy wrote: WPF designer didn't seem to be able to detect it
It does show up in XAML. What exactly are you referring to ?
That Asian Guy wrote: What's the proper way of declaring a new property for a control?
If you want it to take part in binding(as a target specifically),styles,animations etc. you might want to implement it as a DependencyProperty[^]
|
|
|
|
|
Hi all!
I'm newbie in WPF, so sorry about stupid question.
It is possible to show combobox side by side with selected TreeViewItem?
I need something like shown in the left picture at the following link: http://www.mypicx.com/03242009/Combobox_in_TreeviewItem/
I tried to do thus:
<TreeView Name="treeView1">
<TreeViewItem Header="aaa">
<ComboBox Height="19">
<ComboBoxItem Content="111" IsSelected="True"></ComboBoxItem>
<ComboBoxItem>222</ComboBoxItem>
<ComboBoxItem Content="333"></ComboBoxItem>
</ComboBox>
<TreeViewItem Header="aaa1">
</TreeViewItem>
<TreeViewItem Header="aaa2">
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="bbb">
<TreeViewItem Header="bbb1" />
<TreeViewItem Header="bbb2" />
</TreeViewItem>
<TreeViewItem Header="ccc" />
</TreeView>
and the result you can see in the right picture.
Meantime I need to know, how to do this visually. Later I need to do something with SelectedItemChanged event.
Thanks in advance!
P.S. sorry about my english
|
|
|
|
|
Put the combobox in the header aswell.
<TreeView Name="treeView1">
<TreeViewItem>
<TreeViewItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock>aaa</TextBlock>
<ComboBox Height="19">
<ComboBoxItem Content="111" IsSelected="True"></ComboBoxItem>
<ComboBoxItem>222</ComboBoxItem>
<ComboBoxItem Content="333"></ComboBoxItem>
</ComboBox>
</StackPanel>
</TreeViewItem.Header>
<TreeViewItem Header="aaa1">
</TreeViewItem>
<TreeViewItem Header="aaa2">
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="bbb">
<TreeViewItem Header="bbb1" />
<TreeViewItem Header="bbb2" />
</TreeViewItem>
<TreeViewItem Header="ccc" />
</TreeView>
|
|
|
|
|
Great!
Thank you very much.
|
|
|
|