如何使用mvvm在wpf中添加子列表?

时间:2015-04-01 06:32:24

标签: wpf mvvm

namespace colourchanges
{
    public class Group 
    {
        public string Name { get; set; }
//its a class for adding parent list using group class
    }

    public class EmployeeTree : INotifyPropertyChanged
    {
        public EmployeeTree()
        {
            this.GroupStaff = new List<Group>();
            GroupStaff.Add(new Group { Name = "Designers" });
            GroupStaff.Add(new Group { Name = "Developers" });
            GroupStaff.Add(new Group { Name = "Managers" });

//here we are declaring list for adding parent list
        }

        private List<Group> _GroupStaff;
        public List<Group> GroupStaff
        {
            get { return _GroupStaff; }
            set
            {
                _GroupStaff = value;
                RaisePropertyChanged("GroupStaff");
            }
        }
//creates a list for parentlist

        private Group _selectedGroupStaff;
        public Group selectedGroupStaff
        {
            get { return _selectedGroupStaff; }
            set
            {
                _selectedGroupStaff = value;
                if (selectedGroupStaff.Name == "Designers")
                {
                    City = "Chennai";
                    Country = "India";
                    Email = "Designer@gmail.com";
                    MobileNo = 9094117917;
                    Address = "Annanagar";
                }
                else if (selectedGroupStaff.Name == "Developers")
                {
                    City = "Trichy";
                    Country = "India";
                    Email = "Developer@gmail.com";
                    MobileNo = 9094667878;
                    Address = "Koyambedu";
                }
                else if (selectedGroupStaff.Name == "Managers")
                {
                    City = "Salem";
                    Country = "India";
                    Email = "Manager@gmail.com";
                    MobileNo = 9094154678;
                    Address = "Arumbakkam";
                }
                RaisePropertyChanged("selectedGroupStaff");
            }
        }//for selecting parent list in order to bind to textbox


        private string _City;
        private string _Country;
        private string _Email;
        private long _MobileNo;
        private string _Address;
//properties of parent list to bind to textbox
        public string City
        {
            get { return _City; }
            set
            {
                _City = value;
                RaisePropertyChanged("City");
            }
        }
        public string Country
        {
            get { return _Country; }
            set
            {
                _Country = value;
                RaisePropertyChanged("Country");
            }
        }
        public string Email
        {
            get { return _Email; }
            set
            {
                _Email = value;
                RaisePropertyChanged("Email");
            }
        }
        public long MobileNo
        {
            get { return _MobileNo; }
            set
            {
                _MobileNo = value;
                RaisePropertyChanged("MobileNo");
            }
        }
        public string Address
        {
            get { return _Address; }
            set
            {
                _Address = value;
                RaisePropertyChanged("Address");
            }
        }
///raise property changed event handler code


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



//how to add sub list for designers developers and managers in the constructor 

1 个答案:

答案 0 :(得分:0)

让以下为您的Model类

public class Group 
{
 private string _City;
 private string _Country;
 private string _Email;
 private long _MobileNo;
 private string _Address;
 public Group()
 {
  Items = new ObservableCollection<Group>();
 }
 public ObservableCollection<Group> Items { get; set; }
}

在ViewModel的构造函数中,您可以添加Items。

public EmployeeTree()
 {
    this.GroupStaff = new List<Group>();
    Group rootGroup = new Group(){Name ="Manager"};
    Group childGroup = new Group(){Name = "Developer"};
    rootGroup.Items.Add(childGroup);
    this.GroupStaff.Add(rootGroup);
    }

这是针对分层结构的。希望你正在寻找这个。

你的XAML应该是这样的

<TreeView Name="GroupTreeView"> 
 <TreeView.ItemTemplate> 
  <HierarchicalDataTemplate ItemsSource="{Binding Items}"> 
   <TextBlock Text="{Binding Name}" /> 
  </HierarchicalDataTemplate>
</TreeView.ItemTemplate>