2011-02-01 3 views
0

У меня есть список привязывается к TreeView, как:WPF Databinding Treeview в список не обновляется

XAML:

<TreeView Name="browserTree" 
      BorderBrush="DarkSlateGray" 
      BorderThickness="1" 
      Grid.Row="2" 
      Margin="0,3,0,0" 
      ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"> 
    <TreeView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}"/> 
     </DataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

C#:

browserTree.DataContext = treeList; 

Я обновляю список с помощью:

void QueryChange(string s) 
{ 
    rCM.SetCommand(s); 
    treeList.Clear(); 
    SqlDataReader sr = rCM.ExecuteReader(System.Data.CommandBehavior.Default); 
    while (sr.Read()) 
    { 
     treeList.Add((string)sr["tree_hdr"]); 
    } 
    sr.Close(); 
} 

List<string> - это просто местозаполнитель на данный момент для более значимого класса данных, который я еще не реализовал. Но сейчас мне нужно знать, почему TreeView не обновляется, чтобы отразить изменения, внесенные в список.

ответ

2

Попробуйте сделать treelist ObservableCollection.

+0

Спасибо, сэр! Я не знаю, почему это работает, но это так! – FlyingStreudel

+0

Наблюдаемая коллекция сообщит ui, когда она будет обновлена, поэтому объект пользовательского интерфейса может обновить себя. – gmn

0

Пожалуйста, проверьте тип вашего treeList, который вы задали как DataContext. Он должен быть ObservableCollection, чтобы отразить изменения вашей коллекции в пользовательском интерфейсе

Или еще раз для быстрого обхода снова установите DataContext после заполнения списка.

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