Я сам решил это, у меня было несколько неправильных вещей, и мне не хватало нескольких ключевых моментов.Я надеюсь, что этот ответ может помочь кому-то еще.
Во-первых, вам нужен pyevent.py из каталога tutorial / в вашем каталоге IronPython.
Во-вторых, нам нужен вспомогательный класс:
class NotifyPropertyChangedBase(INotifyPropertyChanged):
"""INotifyProperty Helper"""
PropertyChanged = None
def __init__(self):
(self.PropertyChanged, self._propertyChangedCaller) = make_event()
def add_PropertyChanged(self, value):
self.PropertyChanged += value
def remove_PropertyChanged(self, value):
self.PropertyChanged -= value
def OnPropertyChanged(self, propertyName):
self._propertyChangedCaller(self, PropertyChangedEventArgs(propertyName))
Затем вам нужно объявить свой класс данных следующим образом:
class Email(NotifyPropertyChangedBase):
"""
use setter getter.
IronPython 2.6 or later.
"""
@property
def From(self):
return self._From
@From.setter
def From(self, value):
self._From = value
self.OnPropertyChanged("From")
@property
def Subject(self):
return self._Subject
@Subject.setter
def Subject(self, value):
self._Subject = value
self.OnPropertyChanged("Subject")
Наконец, установите ItemSource ListBox:
self.data = ObservableCollection[Email]()
self.MyListBox.ItemsSource = self.data
Кредит этой ссылке за помощь: http://palepoli.skr.jp/wp/2009/06/28/wpf-listview-databinding-for-ironpython/