This mediator is a generic implementation of the Mediator pattern, you can send and receive any messages and pass an object with it. You also can send and receive an object directly.

Usage
<UserControl x:Class="DW.SharpTools.Demo.MediatorControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<StackPanel>
<TextBox x:Name="message" />
<Button Margin="5" Content="Send" Click="Send_Click" HorizontalAlignment="Center" />
</StackPanel>
</UserControl>
using System.Windows.Controls;
namespace DW.SharpTools.Demo
{
public partial class MediatorControl : UserControl
{
public MediatorControl()
{
InitializeComponent();
}
private void Send_Click(object sender, System.Windows.RoutedEventArgs e)
{
Mediator.SendMessage(Messages.UserMessage, message.Text);
}
}
}
namespace DW.SharpTools.Demo
{
public class Listener
{
public Listener()
{
Mediator.ListenForMessage(Messages.UserMessage, MessageSend);
}
private void MessageSend(object argument)
{
var message = argument.ToString();
}
}
}
namespace DW.SharpTools.Demo
{
public enum Messages
{
UserMessage
}
}