Обновить 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, поэтому я все еще пытаюсь понять это.