2012-01-20 2 views
0

У меня есть следующий класс в моем контексте данныхКак обновить ListBoxItem [с DataContext]

class s 
{ 
public string name{get;set;} 
public string family {get;set;} 
public string status{get;set;} 
} 

Я сделал стиль для ListBoxItem [добавлено 2 более ContentPresenter] в соответствии с моим DataContext, я имею в виду содержание каждого предъявителей Содержимое установлено на «{Binding?}» -? может быть именем, семьей или статусом.

Я поставил этот DataContext в ListBoxItem, но когда я изменить DataContext, он не будет отображаться

((s)(item.DataContext)).name="change"; 

, но я вижу, что ничего не изменилось.

i Google это, но большинство вопросов было немного иным с моим.

Привет, ПК РАЗРАБОТЧИКОВ

ответ

2

В дополнение к использованию ObservableCollection, вы также должны реализовать интерфейс INotifyPropertyChanged для вашего класса s, а также, связать элементы окна WPF к свойствам класса s с использованием привязки данных.

Ниже приведены подробные сведения о том, как реализовать INotifyPropertyChanged:

http://msdn.microsoft.com/en-us/library/ms743695.aspx

и, Databnding Overview on MSDN

+0

Если этот объект находится в ObservableCollection, ему не нужен INotify, но если он не реализуется, INotify – MyKuLLSKI

+1

@MyKuLLSKI INotifyPropertyChanged должен быть реализован, поскольку ObservableCollection не предоставляет никаких уведомлений при изменении какого-либо свойства в коллекции , См .: http://www.codeproject.com/KB/silverlight/SLListVsOCollections.aspx – VS1

+0

Ум ... Наблюдаемое собрание реализует INotify. Простой: http://stackoverflow.com/questions/5123537/mvvm-observablecollection-question – MyKuLLSKI

2

Выполните следующие действия:

  1. Установите DataContext родительского элемента ListBox к ObservableCollection() SCollection этого
  2. Установите ItemSource в ListBox to {Binding}, если вы установите для этого DataContext, используйте {Binding SColection}
  3. Добавить элементы в ObservableCollection и ListBox автоматически обновит
  4. Затем просто изменить элементы в ObservableCollection, а не ListBox
+0

Я хотел бы использовать ObservableCollection тоже :). Убедитесь, что свойство INotify установлено, и событие также запущено. – Mixxiphoid

0

На самом деле я не очень понимаю ваш вопрос? Вы хотите иметь Listbox, который отображает Список объектов типа s? Если это так, я бы пошел за DataTemplates, как в своем ответе на this question.

Или у вас есть особая ситуация, которая заставляет вас напрямую настраивать привязку для каждого объекта ListBoxItem?

+0

привязка установки для каждого объекта ListBoxItem – Peyman

Смежные вопросы