Actualizar el modelo de vista basado en el evento MainWindow

Tengo un UdpClient, activando un evento DataRecevied en mi MainWindow:

public partial class MainWindow : Window
{
    public static YakUdpClient ClientConnection = new YakUdpClient();
    public ClientData;

    public MainWindow()
    {
        InitializeComponent();
        Loaded += OnLoaded;
    }

    private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        ClientData = new ClientData();
        ClientConnection.OnDataReceived += ClientConnectionOnDataReceived;
    }

    private void ClientConnectionOnDataReceived(object sender, MessageEventArgs messageEventArgs)
    {
        ClientData.Users = messageEvenArgs.ConnectedUsers;
    }
}

Mis clases ClientData y Usuario tienen el siguiente aspecto:

public class ClientData
{
    public List<User> Users {get;set;)
}

public class User
{
    public string Name {get;set;}
}

En mi MainWindow, tengo un UserControl llamadoUserListView que tiene un ViewModel llamadoUserListViewModel

El ViewModel se ve de la siguiente manera:

public class UserListViewModel: BindableBase
{
    public UserListViewModel()
    {
        //I am sure there are better ways of doing this :(
        Users = new ObservableCollection<User>((MainWindow)Application.Current.MainWindow).ClientData.Users
    });

    private ObservableCollection<User> _users;
    public ObservableCollection<User> Users
    {
        get{ return _users;}
        set { this.SetProperty(ref this._users, value); }
    }
}

La dificultad que tengo aquí es cuando elClientConnectionOnDataReceived evento en MainWindow se activa, me gustaría actualizar miClientData clase, Mi Viewmodel debería ser notificado de alguna manera que la lista cambió, y posteriormente actualizar mi IU.

¿Alguien puede darme un ejemplo sólido de cómo lograr esto usando MVVM (Prism) en WPF?

Soy nuevo en MVVM, así que todavía estoy tratando de resolver esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta