English 中文(简体)
ADO.NET DataServices with Prism
原标题:

I ve start using prism with silverlight 3, but, we are trying to implement it to work with ADO.NET DataServices. The "DataServiceQuery" query type required to use with Silverlight, requires a Asyncronous call to be fired after the query. This will break ous Prism Pattern by what I can see. Any ideas to get only the data of the query to use in Prism Pattern? Correct-me anyone if i m wrong!

问题回答

Making an Asynchronous call to your server doesn t break "Prism Pattern". When your view needs to query the server, its viewmodel fires an asynchronous request and provides a callback. Once callback is called, it handles the result and updates whatever properties it exposes to a view. This will result in view updating according to bindings you set up in your xaml.

PL is exactly right. There s really no patterns that Prism encourages that are incompatible with ADO.NET Data Services. There are just a few things you should know.

Here s a small sample. It s a little tricky... the complete event will sometimes fire outside of the UI thread, so you have to handle it with the dispatcher (at least in SL2 you did):

public class MyViewModel : BaseViewModel
{

     public Customer CustomerResult
     {
         ...
     }

     NorthwindEntities svcContext = null;
     public MyViewModel()
     {
            svcContext =
                new NorthwindEntities(new Uri("Northwind.svc", UriKind.Relative));

            DataServiceQuery<Customers> query =
                svcContext.Customers.Expand("Orders");

            // Begin the query execution.
                query.BeginExecute(WorkComplete, query);

     }



     private void WorkComplete(IAsyncResult result)
     {
          DataServiceQuery<Customers> query =
                    result.AsyncState as DataServiceQuery<Customers>;

          Customers returnedCustomer =
                    query.EndExecute(result).FirstOrDefault();

          //Execute with the dispatcher
          Dispatcher.CurrentDispatcher.BeginInvoke( () =>
          {
               CustomerResult = returnedCustomer;
          });
     }
}

Of course there is no exception handling in here, but you get the picture hopefully.





相关问题
Silverlight Rich text box control

Our team decided that we need our own custom Rich text box control for Silverlight app we are developing. We looked at existing controls mentioned at A good rich text control for Silverlight but ...

Silverlight ImageBrush not rendering (with Bing Map Control)

I m trying to add an image to a Pushpin instance from the Silverlight Bing Map Control, but I can t seem to get it to render (the pushpin renders fine). This is probably a general WPF question rather ...

Silverlight OpenFileDialog DoEvents equivalent

I m processing large files after they are selected by the user. My code looks like the following: if (FileDialog.ShowDialog() == true) { // process really big file } This freezes up the UI so ...

list of controls with templates in silverlight

Does anyone know where to find a list of controls that you can set the template on in Silverlight? I ve wasted several hours now trying to create control templates only to find that the control doesn ...

Silverlight, Updating the UI during processing

I have a simple silverlight multifile upload application, and i want to provide the user with some feedback, right now its only in a test phase and i dont have the webservice. Somehow i cant get the ...

Silverlight 3 - FindName returns null

This looks a bug to me.. Using Silverlight 3 and i have a user control defined in XAML and trying to access the object during runtime returns a null. <Grid> <common:CommonGridEditPanel x:...

silverlight 3 collection binding

Someone please help me understand why this binding does not work... I have a class called SelectionManager with a property called dates which is populated by a WCF service. The property is an ...

热门标签