Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 78133
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T20:56:22+00:00 2026-05-10T20:56:22+00:00

I’m working on a WPF application and is using the Model-View-ViewModel pattern. The application

  • 0

I’m working on a WPF application and is using the Model-View-ViewModel pattern.

The application consists of two modules at the moment:

  • Left Panel to browse a tree and select a node
  • Main Panel to show the content of the selected tree node.

I want to keep these two modules seperated, but when I select a node in the Left Panel I need to fire an event that the Main Panel can subscribe to. I don’t want to couple the Left and the Main panel, so I don’t want to share instances of the ViewModel classes.

Optimally I would love to use Prism (WPF Composite Application Guidance), but I’m currently extending an existing application and cannot introduce more dependencies. The project is also on .NET 3.0 (not 3.5), so I would have to convert Prism back to .NET 3.0 as it is written for .NET 3.5.

In Prism I would solve this using the Loosely Coupled eventing infrastructure. It allows you to fire an event in any class in any layer, and listen to any event in any class in any layer. Basically the publisher and subscriber of the event is decoupled.

I use Commands to achieve this loose coupling between my View and my ViewModel, but I’m not sure how to do proper cross-View communication.

Any tips or suggestions are greatly appreciated.

I’m specifically looking for a really light weigh pub/sub event model for .NET 2.0/3.0 (no LINQ stuff), or some thing else to implement cross View (module) communication without coupling the two modules.

Update: I ended up solving this in a similar manner to what Glen suggests. I have a separate EventService (I call it a CommandProxy), and pass that one to every ViewModel through the constructors in my service locator (at the moment I’m using a Service Locator instead of a IoC-container). The CommandProxy exposes a set of MultiDelegateCommants, which is an extension of the DelegateCommand in Prism (Composite WPF Guidance). It basically allows Commands that is decoupled from the Visual Tree, and that supports multiple subscribers.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T20:56:22+00:00Added an answer on May 10, 2026 at 8:56 pm

    Do you have an IoC container? One simple approach is to create a custom service that fires the event. Event Aggregator is generic, but you can create a specific service that does what you want.

    For example create an EventingService that has a OnNodeSelected method. That method fires a NodeSelected event which hangs off the service. The service is then registered in your IoC container allowing publishers and subscribers to get to it. This way if say your MainPanel needs to subscribe, then your MainPanelViewModel will get injected with the EventingServiec in it’s constructor. It will then subscribe. Another approach if you are using WPF is to pull the CompositeCommand from the Composite App Library code and have the eventing service expose a CompositeCommand. Then each subscriber (View Model) registers their command with the service. When the OnNodeSelected is called, the CompositeCommand’s execute is invoked, thereby notifying all the interested parties.

    We talk about using your own service for this in the docs for Composite App Guidance at http://www.microsoft.com/compositewpf in the section on Loosely Coupled Events in the Communication topic. (http://msdn.microsoft.com/en-us/library/cc707836.aspx). Francis Cheung also has a post on this.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 115k
  • Answers 115k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer I'm not familiar with the audio hardware within the iPhone… May 11, 2026 at 10:24 pm
  • Editorial Team
    Editorial Team added an answer How about using mogrify, part of ImageMagick? If you really… May 11, 2026 at 10:24 pm
  • Editorial Team
    Editorial Team added an answer There's no need to set location.href manually: The link will… May 11, 2026 at 10:24 pm

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is
Is it possible to replace javascript w/ HTML if JavaScript is not enabled on

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.