zoukankan      html  css  js  c++  java
  • WPF ObservableCollection,INotifyPropertyChanged

      xaml:

    <DockPanel Margin="10">
                    <StackPanel DockPanel.Dock="Right" Margin="10,0,0,0">
                            <Button Name="btnAddUser" Click="btnAddUser_Click">Add user</Button>
                            <Button Name="btnChangeUser" Click="btnChangeUser_Click" Margin="0,5">Change user</Button>
                            <Button Name="btnDeleteUser" Click="btnDeleteUser_Click">Delete user</Button>
                    </StackPanel>
                    <ListBox Name="lbUsers" DisplayMemberPath="Name"></ListBox>
            </DockPanel>

    using System.ComponentModel;
    using System.Collections.ObjectModel;

    namespace WpfTutorialSamples.DataBinding
    {
            public partial class ChangeNotificationSample : Window
            {
                    private ObservableCollection<User> users = new ObservableCollection<User>();

                    public ChangeNotificationSample()
                    {
                            InitializeComponent();

                            users.Add(new User() { Name = "John Doe" });
                            users.Add(new User() { Name = "Jane Doe" });

                            lbUsers.ItemsSource = users;
                    }

                    private void btnAddUser_Click(object sender, RoutedEventArgs e)
                    {
                            users.Add(new User() { Name = "New user" });
                    }

                    private void btnChangeUser_Click(object sender, RoutedEventArgs e)
                    {
                            if(lbUsers.SelectedItem != null)
                                    (lbUsers.SelectedItem as User).Name = "Random Name";
                    }

                    private void btnDeleteUser_Click(object sender, RoutedEventArgs e)
                    {
                            if(lbUsers.SelectedItem != null)
                                    users.Remove(lbUsers.SelectedItem as User);
                    }
            }

            public class User : INotifyPropertyChanged
            {
                    private string name;
                    public string Name {
                            get { return this.name; }
                            set
                            {
                                    if(this.name != value)
                                    {
                                            this.name = value;
                                            this.NotifyPropertyChanged("Name");
                                    }
                            }
                    }

                    public event PropertyChangedEventHandler PropertyChanged;

                    public void NotifyPropertyChanged(string propName)
                    {
                            if(this.PropertyChanged != null)
                                    this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
                    }
            }
    }
     
  • 相关阅读:
    数据库连接字符串
    搭建消息队列
    Linux---江湖
    Bundle压缩JS和CSS
    DDD分层架构之仓储
    UI控件库
    图解Http协议 url长度限制
    JAVA jdbc(数据库连接池)学习笔记(转)
    领域驱动设计(DDD)部分核心概念的个人理解(转)
    怎样的中奖算法能让人信服(转)
  • 原文地址:https://www.cnblogs.com/Fred1987/p/6049810.html
Copyright © 2011-2022 走看看