Skip to main content

Posts

Showing posts with the label Prism

Handling UI control's events in ViewModel [Prism 5.0]

Recently I came across a requirement in which I was supposed to data bind a command from my viewModel to an event. In other words, my code-behind was not supposed to contain any code related to event handlers of a control. After digging more into Prism, luckily I found my answer. Above requirement can be achieved using InvokeCommandAction provided in Prism 5.0. Well, so my article will elaborate more on how to achieve this. InvokeCommandAction InvokeCommandAction consents us to invoke ICommand implementation on our viewModel to an event that exist on our control. It basically means, we are no longer bound or required to have a command property on a control in order to invoke a command. Now, you may say you have seen this similar thing before. And you are right because Blend SDK ships one. But the InvokeCommandAction which Prism provides is little bit different in two ways: First, it manages the state of the element. It updates the enable state of the control that is...

PopUps with Interactivity using ConfirmationRequest [Prism 5.0]

In continuation to my previous blog on PopUps with Interactivity , here we will see how to implement IConfirmation request. In order to make this post short, I'll implement IConfirmation request on top of previous example.  Let's open our viewModel and add property for InteractionRequest of type IConfirmation  as: public InteractionRequest<IConfirmation> ConfirmationRequest { get; set; } Now for every getter/setter we should have a corresponding command, which will help us in invoking this request: public ICommand ConfirmationCommand { get; set; } Just like NotificationRequest, we need to create instances of these objects in constructor as: If you will see above snippet closely, you will notice that in case of Confirmation, we are handling Status in slight different manner. Next step is to update our View as we did for NotificationRequest. Now everything is in place. Let's quickly run the application and click on PopUp button:...

What's New In Prism 5.0?

Are you WPF, Silverlight or Windows Phone developer and used Microsoft’s patterns and practices library to build your applications? If you are, then you might want to know that Microsoft’s patterns and practices team have just released Prism 5.0. All the applications built using the previous versions of Prism are now broken. So, in this artifact, I’ll be discussing about the new assemblies, new objects and deprecated objects which can/can’t be used with Prism 4.1 and Prism 5.0. Downloading Prism 5.0 Prism 5.0 can be downloaded and installed either from patterns and practices site having URL as http://compositewpf.codeplex.com/ or by using Nuget package inside Visual Studio. Mentioned link also discusses about all the changes which are part of Prism 5.0 Supported Platforms Let’s have a quick look at the supported platforms of Prism 5.0. While working with previous versions of Prism (i.e. 4.1), one was able to create applications like WPF (.Net 4.0), Silverlight 5 and Window...

Starting with Prism - Part 3 of n

Introduction  Continuing to my   Prism 2 of n series , in this article I am going to talk about how a communication happens between various application components, following Prism framework. Background  In earlier articles of this series, I already mentioned that Prism is all about loose coupling and modularity. So, in order to achieve both these aspects we divide our application into multiple modules. Now, when we are talking about modularity, first thing which strikes to our mind is communication. How will these module going to talk with each other, how they are going to communicate with each other, etc, etc. So, when we have a need of communication between modules, there are couple of approaches which we can take like Commanding, Event Aggregation, Shared Services, Region Context and probably there are many more. In this article, mainly I'll be taking these four concepts:    Commanding   Event Aggregation   Region Context...