代码之家  ›  专栏  ›  技术社区  ›  Carlo

wpf绑定对象更新通知

  •  0
  • Carlo  · 技术社区  · 14 年前

    我有一个树视图,上面绑定了一些对象,我们这样说:

    public class House
        {
            public List<Room> Rooms { get; set; }
            public List<Person> People { get; set; }
    
            public House()
            {
                this.Rooms = new List<Room>();
                this.People = new List<Person>();
            }
    
            public void BuildRoom(string name)
            {
                this.Rooms.Add(new Room() { Name = name });
            }
    
            public void DestroyRoom(string name)
            {
                this.Rooms.Remove(new Room() { Name = name });
            }
    
            public void PersonEnter(string name)
            {
                this.People.Add(new Person() { Name = name });
            }
    
            public void PersonLeave(string name)
            {
                this.People.Remove(new Person() { Name = name });
            }
        }
    
        public class Room
        {
            public string Name { get; set; }
        }
    
        public class Person
        {
            public string Name { get; set; }
        }
    

    tree view正在监视house对象,每当一个房间被建造/摧毁或一个人进出时,我的树视图会自动更新以显示房屋的新状态(为了简单起见,我省略了一些实现细节)。

    我想知道更新完成的确切时间,这样我就可以在那里做一些事情,事情是我创建了一个所选项目的指示器,当某个项目移动时,我需要更新该指示器的位置,这就是我需要它的原因,正好在树视图更新时。

    如果你知道解决办法,告诉我。

    同样,代码也不是完美的(destroroom和personleave),但是你得到了这个想法。

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  0
  •   Danny Varod    14 年前

    使用ObservableCollection<t>并将其包装在CollectionView中以获取可绑定的当前项。

    http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview_members.aspx