Уведомление об обновлении связанного объекта WPF - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть TreeView с несколькими объектами, связанными с ним, скажем, что-то вроде этого:

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; }
    }

TreeView наблюдает за объектом Дома, всякий раз, когда комната строится / разрушается, или человек входит/ leaves, мое древовидное представление обновляется, чтобы показать новое состояние дома (я упустил некоторые детали реализации для простоты).

Мне нужно знать точный момент, когда это обновление завершится, поэтому я могу сделатьчто-то прямо здесь, дело в том, что я создал индикатор выбранного элемента, и когда что-то движется, мне нужно обновить положение указанного индикатора, поэтому мне это нужно именно тогда, когда обновляется древовидное представление.

ПозвольтеЯ знаю, если вы знаете решение этой проблемы.

Кроме того, код не идеален (DestroyRoom и PersonLeave), но вы поняли.

Спасибо!

1 Ответ

0 голосов
/ 07 апреля 2010

Используйте ObservableCollection и оберните его в CollectionView, чтобы получить привязываемый CurrentItem.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...