Использование DependencyProperty и ObservableCollection на моделях классов - PullRequest
1 голос
/ 30 марта 2011

Я только начинаю на WPF с MVVM, так что простите за любые заблуждения. У меня есть модель (не модель представления, а фактическая модель), в которой много списков внутри классов, которые находятся в других списках, создающих деревья данных.

Важно, данные должны иметь XML Serializabled, в настоящее время нет проблем с обычными свойствами и списком.

Модель представления этого класса требует гораздо больше работы, чем я ожидал, и я думаю о преобразовании некоторых или, возможно, всего Списка в ObservableCollections, каковы плюсы и минусы этого?

Кроме того, что было бы лучше всего в «привязываемой модели», NotifyPropertyChange или DependencyProperties? Я думаю, что с DependencyProperty будет некоторый прирост памяти, поскольку многие объекты будут использовать значения по умолчанию для большинства свойств, как насчет производительности в целом, и есть ли у нее проблемы с сериализацией?

С уважением,

1 Ответ

1 голос
/ 30 марта 2011

Модель представления этого класса требует гораздо больше работы, чем я ожидал, и я думаю о преобразовании некоторых или, возможно, всего Списка в ObservableCollections, каковы плюсы и минусы этого?

В ObservableCollection<T> немного больше накладных расходов по сравнению с List<T>, но это облегчает задачу, так как будет работать привязка данных непосредственно к вашим коллекциям моделей.

Кроме того, что было бы лучше всего в «привязываемой модели», NotifyPropertyChange или DependencyProperties?

Я бы не использовал DependencyProperties в вашей модели. Это зависит от библиотек WPF и зависит от конкретной платформы. Если вы хотите иметь возможность привязки данных непосредственно к вашей модели, разумным подходом является внедрение INotifyPropertyChanged.

Однако вам действительно следует остановиться и подождать минуту, прежде чем вносить какие-либо из этих изменений. Если вы изменяете свои классы моделей в первую очередь, чтобы использовать их в своем View, вы нарушаете основные принципы MVVM (и большинства других архитектурных паттернов). Одной из основных целей здесь является то, что ваша Модель не знает об используемом уровне представления - это делает его более гибким в будущем, поскольку вы можете изменять уровни представления, не меняя свою модель вообще.

...