Когда реализовывать интерфейс iNotifyPropertyChanged? - PullRequest
2 голосов
/ 28 февраля 2011

Насколько я понимаю, INotifyPropertyChanged очень полезно при работе с элементами пользовательского интерфейса, которые связаны с одним источником объекта.Мне просто любопытно, почему некоторые классы в .net framework, которые могут каким-то образом использоваться с пользовательским интерфейсом, не реализуют INotifyPropertyChanged?Например SerialPort класс.

Есть ли рекомендуемые рекомендации по использованию INotifyPropertyChanged?или я полностью неправильно понял концепцию интерфейса?

Этот вопрос возник после попытки связать несколько пользовательских элементов управления с классом SerialPort.

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Вы правильно поняли интерфейс.

Но думать, что класс SerialPort как-то связан с пользовательским интерфейсом, плохо.Этот класс должен разрешать доступ к этому одному ресурсу.Ни больше ни меньше.Если вы хотите каким-то образом отобразить информацию, связанную с SerialPort, вы должны создать свой собственный бизнес-класс, который будет использовать SerialPort и предоставлять необходимую информацию через свойства и INotifyPropertyChanged.

2 голосов
/ 28 февраля 2011

Обычно INotifyPropertyChanged реализуется в классе, имеющем бизнес-логику приложения, разработанного для WPF или Silverlight.

Если класс SerialPort используется другими приложениями, такими как WCF или Winform 2.0, INotifyPropertyChanged будет бесполезным или бесполезным.

В любом случае, это интерфейс, понятный движку фреймворка WPF. И Вы можете создать бизнес-класс, который может реализовать INotifyPropertyChanged и внутренне содержать класс SerialPort.

Надеюсь, это имеет смысл.

1 голос
/ 28 февраля 2011

INotifyPropertyChanged предназначен для того, чтобы объекты могли общаться со своими привязками, поэтому в этом смысле ваше понимание верно.

Вы можете обернуть SerialPort, чтобы обеспечить это.

Я не уверен, почему SerialPort не реализует этот интерфейс, поэтому в этом смысле я не могу ответить на эту часть вопроса.

...