我正在开发一个小工具,它应该显示一个服务器列表来学习MVVM。我使用MVVM Light和一些教程(例如http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial)。
假设我有一个名为Server的类,它具有IP,Name和Ping属性。这些值不会从外部触及,因此我将setter设置为private。这些属性每10秒钟由后台线程查询来自服务器(它是蒸汽服务器)的数据。现在我也为此实现了一个看起来像这样的视图。
public class ServerViewModel: ObservableObject
{
private Server server;
public Server Server
{
get
{
return server;
}
}
public string Name
{
get
{
return Server.Name;
}
}
public int Ping
{
get
{
return Server.Ping;
}
}
public int PlayerCount
{
get
{
return Server.PlayerCount;
}
}
public int MaxPlayers
{
get
{
return Server.MaxPlayers;
}
}
public ServerViewModel(Server server)
{
this.server = server;
}
}
此ViewModel由另一个名为ServersView:
的ViewModel管理public class ServersViewModel
{
#region Members
ObservableCollection<ServerViewModel> servers = new ObservableCollection<ServerViewModel>();
#endregion
#region Properties
public ObservableCollection<ServerViewModel> Servers
{
get
{
return servers;
}
set
{
servers = value;
}
}
#endregion
#region Construction
public ServersViewModel()
{
Model.Server.Servers serversInstance = new Model.Server.Servers();
foreach(IServer current in serversInstance.ServerList)
{
if(current is Server)
{
servers.Add(new ServerViewModel((Server) current));
}
}
}
#endregion
}
现在我的问题是在哪里实现RaisePropertyChanged方法。我应该直接在Server类,ServerView还是ServersView中执行此操作?此外,我希望将每个服务器的用户控件添加到简单网格中。我怎么能意识到这一点?