silverlight / wp7: изменить строку, привязанную к XAML - PullRequest
2 голосов
/ 15 марта 2011

Silverlight / WP7:

У меня есть список объектов, которые я десериализовал из запроса JSON. Этот список будет привязан к ListBox в XAML. Однако я хочу отредактировать одну из строк, которая возвращается, прежде чем она будет связана с пользовательским интерфейсом. Я провел некоторый поиск и наткнулся на это решение , однако мне не очень понятно предложенное решение:

string _value;
public string Value { get { return _value; } set { _value = value; NotifyPropertyChanged("Value"); NotifyPropertyChanged("ValueFormatted"); } }
public string ValueFormatted { get { return "Static Text: " + _value; } }

Что такое NotifyPropertyChanged? Я довольно новичок в Silverlight / C # и вижу только интерфейс INotifyPropertyChanged. Как мне реализовать это решение?

Ответы [ 3 ]

4 голосов
/ 15 марта 2011

Проблема, которую вы пытаетесь решить, на самом деле не требует интерфейса INotifyPropertyChanged. Это будет работать нормально, если вы удалите методы NotifyPropertyChanged и интерфейс INotifyPropertyChanged, а затем свяжетесь со свойством ValueFormatted.

Однако реализация INotifyPropertyChanged для классов, привязанных к пользовательскому интерфейсу, обычно является хорошей идеей:

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

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

Шоу Silverlight дает хороший простой пример INotifyPropertyChanged

0 голосов
/ 15 марта 2011

Похоже, вам нужен конвертер свойств, вы можете указать конвертер в вашей разметке xaml, затем, когда контент рисуется, он сначала отправляется в ваш класс конвертера, и вместо исходного значения используется возвращаемое значение.

Я сейчас не дома, но должен быть через час или около того, и обновлю это примером.

0 голосов
/ 15 марта 2011

Вам необходимо реализовать объект INotifyPropertyChanged в вашем интерфейсе. Вы видите, что NotifyPropertyChanged - это просто вызов метода, который вызывает событие PropertyChanged.

Страница MSDN на INotifyPropertyChanged на самом деле имеет довольно хороший пример. Как только вы внедрите INotifyPropertyChanged, вы сможете сделать это без проблем. В образце даже есть метод NotifyPropertyChanged, такой же, как у фрагмента вашего решения.

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