MVVM RaisePropertyChanged实现

时间:2016-03-31 17:38:06

标签: c# wpf mvvm

我正在开发一个小工具,它应该显示一个服务器列表来学习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中执行此操作?此外,我希望将每个服务器的用户控件添加到简单网格中。我怎么能意识到这一点?

0 个答案:

没有答案