WPF简单数据绑定

 

XAML:

        <!--#region 数据绑定控件-->
        <DataGrid x:Name="dataGrid" Grid.Column="2" Grid.ColumnSpan="4" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="编号" Width="*" Binding="{Binding Id}"></DataGridTextColumn>
                <DataGridTextColumn Header="名称" Width="*" Binding="{Binding Name}"></DataGridTextColumn>
                <DataGridTextColumn Header="时间" Width="*" Binding="{Binding CreateTime}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
        <!--#endregion-->

后台隐藏代码:

 public partial class AllControl : Window
    {

        List<Users> usl = new List<Users>();

        public AllControl()
        {
            usl.Add(new Users
            {
                Id = 1,
                Name = "maoyang",
                CreateTime = DateTime.Now,
            });
            usl.Add(new Users
            {
                Id = 2,
                Name = "zhangfan",
                CreateTime = Convert.ToDateTime("2018/7/30 8:30:00"),
            });
            usl.Add(new Users
            {
                Id = 3,
                Name = "kejing",
                CreateTime = Convert.ToDateTime("2018/7/30 9:00:00"),
            });
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.dataGrid.ItemsSource = usl;
        }

    }

    public class Users
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime CreateTime { get; set; }
    }

此时如果修改字段,UI界面数据不能实时更新,需要以下修改:

1:把类继承INotifyPropertyChanged这个接口,并实现接口,然后添加定义OnPropertyChanged方法

 public class Users : INotifyPropertyChanged
    {
        private int id;
        private string name;
        private DateTime createTime;

        public int Id
        {
            get
            {
                return id;
            }

            set
            {
                id = value;
                OnPropertyChanged("Id");
            }
        }

        public string Name
        {
            get
            {
                return name;
            }

            set
            {
                name = value;
                OnPropertyChanged("Name");
            }
        }

        public DateTime CreateTime
        {
            get
            {
                return createTime;
            }

            set
            {
                createTime = value;
                OnPropertyChanged("CreateTime");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

写一个修改列表中的字段事件:

     /// <summary>
        /// 点击更改按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Update_Click(object sender, RoutedEventArgs e)
        {
            #region 
            Users usi = usl.Where(x => x.Id == 2).FirstOrDefault();
            usi.Id = 2;
            usi.Name = "老虎";
            usi.CreateTime = DateTime.Now;
            #endregion
        }

XAML修改按钮:

 <!--#region 点击更改按钮-->
        <Button x:Name="Update" Width="100" Height="30" Background="AntiqueWhite" VerticalAlignment="Center" HorizontalAlignment="Center" Content="点击更改按钮" Click="Update_Click"></Button>
        <!--#endregion-->

此时点击这个修改的按钮,UI界面数据即可实时更新

 

posted @ 2018-07-30 15:15  紫晶城  阅读(253)  评论(0编辑  收藏  举报