• WPF ObservableCollection 使用方法


      WPF提供一个强大的类(ObservableCollection )可以简化我们对界面集合显示的增删改操作,并且无刷新,这无疑是对用户对我们程序员都非常有用的。

      当ObservableCollection<T>添加一行时,会自动通知绑定该ObservableCollection<T>的控件并做相应修改。如果希望当ObservableCollection<T>中的属性发生改变时通知UI,则T也需要继承于INotifyPropertyChanged。

      首先声明实体类

    public class Student : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
            private string _SID;
            public string SID
            {
                get { return _SID; }
                set
                {
                    _SID = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("SID"));
                    }
                }
            }
    
            private string _SName;
            public string SName
            {
                get { return _SName; }
                set
                {
                    _SName = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("SName"));
                    }
                }
            }
    
            private string _Address;
            public string SAddress
            {
                get { return _Address; }
                set
                {
                    _Address = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("SAddress"));
                    }
                }
            }
        }
    

      实体类必须实现PropertyChangedEventHandler 事件这个是更新所需要的

      接下来我们添加一个简易的界面

      

     <Grid>
            <StackPanel>
                <DataGrid Name="dgStudent" Height="200"  CanUserAddRows="False" MouseLeftButtonUp="dgStudent_MouseLeftButtonUp"></DataGrid>
                <StackPanel >
                    <TextBox Name="txtid"></TextBox>
                    <TextBox Name="txtname"></TextBox>
                    <TextBox Name="txtaddress"></TextBox>
                    <Button  Name="btnAdd" Content="添加" Click="btnAdd_Click"></Button>
                    <Button  Name="btnUpdate" Content="编辑" Click="btnUpdate_Click"></Button>
                    <Button Name="btnDelete" Content="删除" Click="btnDelete_Click"></Button>
                </StackPanel>
            </StackPanel>
           
        </Grid>
    

      界面很粗糙,随意弄得

      下面我们看看实现添加 编辑 删除的方式

      

    public ObservableCollection<Student> datalist = new ObservableCollection<Student>();
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                dgStudent.ItemsSource = datalist;
            }
    
            private void btnAdd_Click(object sender, RoutedEventArgs e)
            {
                Student s = new Student();
                s.SID = txtid.Text;
                s.SName = txtname.Text;
                s.SAddress = txtaddress.Text;
                datalist.Add(s);
            }
    
            private void btnUpdate_Click(object sender, RoutedEventArgs e)
            {
                foreach (var item in datalist)
                {
                    if (item.SID == txtid.Text)
                    {
                        item.SName = txtname.Text;
                        item.SAddress = txtaddress.Text;
                    }
                }
            }
    
            private void btnDelete_Click(object sender, RoutedEventArgs e)
            {
                var ca = (Student)this.dgStudent.SelectedItem;
                datalist.Remove(ca);
            }
    
            private void dgStudent_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                var ca = (Student)this.dgStudent.SelectedItem;
                if (ca != null)
                {
                    txtid.Text = ca.SID;
                    txtname.Text = ca.SName;
                    txtaddress.Text = ca.SAddress;
                }
            }

      这样就实现的我们对于datagrid的添加删除修改等操作.比较以前,是不是方便多了。

      我参考了eaglenet 的文章学习的

      http://www.cnblogs.com/zhangjianli/archive/2012/06/01/2529864.html

      

  • 相关阅读:
    Py修行路 python基础 (二十五)线程与进程
    Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)
    Py修行路 python基础 (二十四)socket编程
    Py修行路 python基础 (二十三)模块与包
    Py修行路 python基础 (二十二)异常处理
    Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块
    Py修行路 python基础 (十九)面向对象进阶(下)
    Oracle数据库的下载和安装
    单体测试详解
    单体测试书的检查要点
  • 原文地址:https://www.cnblogs.com/fanmiao/p/4015104.html
Copyright © 2020-2023  润新知