Несмотря на то, что он несколько опытен при написании приложений Winforms,... "неопределенность" WPF по-прежнему ускользает от лучших практик и шаблонов проектирования.
Несмотря на заполнение моего списка во время выполнения, мой список выглядит пустым.
Я выполнил простые инструкции из этой полезной статьи безрезультатно. Я подозреваю, что мне не хватает какого-то метода DataBind()
, где я рассказываю списку, что я сделал, изменяя базовый список.
В моем MainWindow.xaml у меня есть:
<ListBox ItemsSource="{Binding TopicList}" Height="177" HorizontalAlignment="Left" Margin="15,173,0,0" Name="listTopics" VerticalAlignment="Top" Width="236" Background="#0B000000">
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked}"/>
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В моем коде, у меня есть:
private void InitializeTopicList( MyDataContext context )
{
List<Topic> topicList = ( from topic in context.Topics select topic ).ToList();
foreach ( Topic topic in topicList )
{
CheckedListItem item = new CheckedListItem();
item.Name = topic.DisplayName;
item.ID = topic.ID;
TopicList.Add( item );
}
}
Что, прослеживая, я знаю, что заселено четырьмя элементами.
ИЗМЕНИТЬ
Я изменил TopicList
на ObservableCollection
. Это все еще не работает.
public ObservableCollection<CheckedListItem> TopicList;
ИЗМЕНИТЬ № 2
Я сделал два изменения, которые помогают:
В файле .xaml:
ListBox ItemsSource="{Binding}"
В исходном коде после заполнения списка:
listTopics.DataContext = TopicList;
Я получаю список, но он не автоматически обновляет флажки, когда я их обновляю. Я подозреваю, что небольшое чтение с моей стороны разрешит это.