Несмотря на некоторый опыт написания приложений для 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;
Я получаю список, но при его обновлении автоматически не обновляются состояния флажков.Я подозреваю, что дальнейшее чтение с моей стороны решит эту проблему.