zoukankan      html  css  js  c++  java
  • 一步一步学习MVVM模式二 增删改

    添加功能,就是做一个建立一个新的实例,然后这个实例绑定到各个控件上面,点击提交按钮的时候,提交按钮的命令command注册到一个添加的方法.

    整个流程就是:

    建一个新的实例,添加按钮绑定AddCommond, AddCommand在ViewModel里注册一个添加新实例的方法,

    删除一个实例,和添加实例一样首先要绑定DeleteCommand绑定到删除按钮,然后

    DeleteCommand在ViewModel里注册一个删除方法,与添加不一样的是:删除需要传递参数,删除实例通过

    <Button Content="删除" Height="37" Margin="10,0,8,0" Command="{Binding RemoveCommand}" CommandParameter="{Binding SelectedItem, ElementName=dataGrid}"/>

    ViewModel中代码如下:

     1 public class ServerViewModel:INotifyPropertyChanged
     2     {
     3         private ServerModel sm;
     4         private Server currentServer;
     5         public Server CurrentServer
     6         {
     7             get { return currentServer; }
     8             set
     9             {
    10                 CurrentServer = value;
    11                 this.OnPropertyChanged("CurrentServer");
    12             }
    13         }
    14 
    15         private ICommand _addCommond;
    16         private ICommand _modifyCommond;
    17 
    18         public ServerViewModel()
    19         { 
    20             sm=new ServerModel();
    21             currentServer = new Server();
    22             serverList = sm.GetServerList();
    23         }
    24 
    25         public ICommand AddCommand
    26         {
    27             get
    28             {
    29                 if (_addCommond == null)
    30                 {
    31                     _addCommond = new ActionCommand(Add);
    32                 }
    33 
    34                 return _addCommond;
    35             }
    36         }
    37 
    38         private void Add()
    39         {
    40             if (serverList != null)
    41             {
    42                 serverList.Add(currentServer);
    43                 currentServer = new Server();
    44             }
    45         }
    46 
    47         private ICommand _deleteCommond;
    48         public ICommand RemoveCommand
    49         {
    50             get
    51             {
    52                 if (_deleteCommond == null) _deleteCommond = new ActionCommand(Delete);
    53                 return _deleteCommond;
    54             }
    55         }
    56 
    57         private void Delete(object obj)
    58         {
    59             Server server = obj as Server;
    60             if (serverList != null)
    61             {
    62                 serverList.Remove(server);
    63             }
    64         }
    65 
    66         private ObservableCollection<Server> serverList;
    67         public ObservableCollection<Server> ServerList 
    68         {
    69             get { return serverList; }
    70             set 
    71             { 
    72                 serverList = value;
    73                 this.OnPropertyChanged("ServerList");
    74             }
    75         }
    76 
    77         public event PropertyChangedEventHandler PropertyChanged;
    78 
    79         private void OnPropertyChanged(string propertyName)
    80         {
    81             if (PropertyChanged != null)
    82                 PropertyChanged(thisnew PropertyChangedEventArgs(propertyName));
    83         }
    84     }

    修改就更简单了,由于绑定是双向的,任务更改都会更新,所以直接做双向绑定就可以了,不用单独做。

    Demo 暂不能下载,压缩文件上传出错,哪天能上传了再上传。

  • 相关阅读:
    【根据条件添加属性】vue页面标签根据条件添加属性
    serialVersionUID
    onsubmit="return navTabSearch(this);"
    MyEclipse改变项目的编码方式
    Tomcat端口被占用
    可拖动图层
    顶部可以折叠的菜单工具栏
    转---- javascript prototype介绍的文章
    网页右侧弹出有缓冲效果的工具栏
    根据时间改变背景
  • 原文地址:https://www.cnblogs.com/langhua/p/2409051.html
Copyright © 2011-2022 走看看