Обновить viewmodel на основе события MainWindow

У меня есть UdpClient, запускающий событие DataRecevied на моем 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;
    }
}

Мои классы ClientData и User выглядят следующим образом:

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

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

В моем MainWindow у меня есть UserControlUserListView который имеет ViewModel под названиемUserListViewModel

ViewModel выглядит следующим образом:

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); }
    }
}

Трудность у меня здесь, когдаClientConnectionOnDataReceived событие на MainWindow запускается, я хотел бы обновить мойClientData Класс My Viewmodel затем должен каким-то образом уведомляться об изменении списка и впоследствии обновлять мой пользовательский интерфейс.

Может ли кто-нибудь дать мне твердый пример того, как добиться этого с помощью MVVM (Prism) в WPF?

Я новичок в MVVM, поэтому я все еще пытаюсь понять это.

Ответы на вопрос(1)

Ваш ответ на вопрос