Разработка классов WPF для привязки данных - PullRequest
4 голосов
/ 27 июня 2011

Мне нужно создать приложение для чата в WPF;Я хочу использовать DataBinding (все еще учусь) и хочу сделать это правильно.Я построил класс Buddy следующим образом:

public class Buddy: INotifyPropertyChanged
{
    private String _name;
    private String _status;
    public String Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
            NotifyPropertyChanged("Name");
        }
    }
    public String Status
    {
        get
        {
            return _status;
        }
        set
        {
            _status = value;
            NotifyPropertyChanged("Status");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

Я не знаю, как лучше всего обращаться с BuddyList.Должен ли я создать класс BuddyList с помощью метода Add и List, а затем DataBinding для экземпляра этого класса?Каков наилучший способ сделать это?

Ответы [ 3 ]

3 голосов
/ 27 июня 2011

Вы можете использовать INotifyCollectionChanged Интерфейс для создания вашего BuddyListClass
Посмотрите здесь пример: Использование INotifyCollectionChanged Также вы можете использовать ObservableCollection<T> Класс .

2 голосов
/ 27 июня 2011

Если вы хотите связать коллекции предметов, вы должны использовать ObservableCollection class

и другие предложения создания и базового класса, которые реализуют интерфейс INotifyPropertyChanged, и извлекайте из него каждый класс, который вы хотите связать с пользовательским интерфейсом.

1 голос
/ 27 июня 2011

Я думаю, что ваше определение класса выглядит просто отлично.

Что касается вопроса о списке, я бы выставил свой список как предназначенный только для чтения для привязки, а также все функции добавления, удаления и редактирования, которые я бы оставил закрытыми.Чтобы не сообщать вашему представлению об изменениях в вашей коллекции вручную, я бы использовал ObservableCollection, но выставил бы его на всеобщее обозрение как ReadOnlyObservableCollection.

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