Принесите меня, я новичок в программировании GUI, IronPython, WPF и .NET. Тем не менее, я довольно хорошо знаком с Python. Я прочитал много руководств относительно привязки данных, таких как DevHawk, но они слишком продвинуты для меня.Простая компоновка списков в IronPython и WPF
Проблема: Я хочу отображать в Listbox управлять путями файлов из списка python, которые могут быть изменены, добавлены или удалены записи. Первая часть, которую я выполнил после уроков.
Однако, когда я обновляю список файлов, управления ListBox не обновляется новыми файлами и при попытке манипулировать ListBox в приложение excepts со следующим сообщением отладки из VS2012:
Add File Click ['C:\test\Employment_Law_Alert_03_28_2012.pdf', 'C:\test\Graph Paper .10in Cartesian c-i-110.pdf', 'C:\test\Greek Alphabet Symbol.pdf', 'C:\test\CNN Money Tipping Guide - How Much to Tip.pdf']
Traceback (most recent call last): File "", line 1, in SystemError: An ItemsControl is inconsistent with its items source. See the inner exception for more information.
Очевидно, что listbox.ItemSource не синхронизирован с списком python. Как обновить два?
Ниже приведены коды образцов ...
Python:
def addFile(self, sender, e):
... # Some files added to self.fileInList
self.listBoxPDFs.ItemsSource = self.fileInList
XAML:
<ListBox x:Name="listBoxPDFs" Margin="2, 2, 2, 2">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding BindsDirectlyToSource=True}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
UPDATE: Я нашел одну работу вокруг, но, безусловно, есть лучший способ?
def addFile(self, sender, e):
... # Some files added to self.fileInList
self.listBoxPDFs.ItemsSource = [] # Clear the listbox first.
self.listBoxPDFs.ItemsSource = self.fileInList # Then rebind.