Свойства коллекции должны быть только для чтения - PullRequest
3 голосов
/ 12 июля 2011

Я использую FxCop для моей сборки WPF MVVM, и она выдает мне ошибку

Свойства коллекции должны быть доступны только для чтения

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

Синтаксис выглядит примерно так

public List Employees
{
    get { return _employees; }
    set
    {
        if (ReferenceEquals(_employees, value))
            return;
        _employees = value;
        RaisePropertyChanged("Employees");
    }
}

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

Вам редко нужно вызывать событие PropertyChanged для коллекции. Сделайте коллекцию видимой, чтобы она уведомляла о любых привязках при добавлении или удалении элементов:

public IList<Employee> Employees
{
    get; 
    private set;
}

// in your constructor:
this.Employees = new ObservableCollection<Employee>();
2 голосов
/ 12 июля 2011

Если вы сделаете свою коллекцию коллекцией ObservableCollection, тогда «важные» события будут происходить, когда элементы добавляются и удаляются из коллекции, а не при ее создании.Я согласен с FxCop.Сделайте коллекцию доступной только для чтения, но сделайте ее коллекцией ObservableCollection

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