Question

J'essaie de lier la liste à Listbox. Et la méthode Button1Click nouvelle instance de MyClass ajoute dans ma liste <>, mais pas visible dans ma zone de liste. Il mon code:

       public static class NotesEngine
            {
                public static List<Note> All;

                static NotesEngine()
                {
                    All = new List<Note>
                              {
                                  new Note
                                      {
                                          Content = "test1",
                                      }
                              };
                }

                public static List<Note> GetNotes()
                {
                    return All;
                }
}

Il est mon épisode de forme et ObjectDataProvider:

<ObjectDataProvider ObjectType="{x:Type NotesEngine}" x:Key="NotesList" MethodName="GetNotes"/>

......

<TabItem Header="test" DataContext="{Binding Source={StaticResource NotesList}}">

                <ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
                         ItemTemplate="{StaticResource NotesListBoxDataTemplate}"
                         ItemsSource="{Binding }">
                </ListBox>
</TabItem>

private void button2_Click(object sender, RoutedEventArgs e)
{
    NotesEngine.All.Add(new Note
                            {
                                Content = "xx",
                                Images = new List<string>(),
                                LastEdit = DateTime.Now,
                                Title = "XASAC",
                            });
}

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Vous devez utiliser ObservableCollection<Node> au lieu de List<Node>. ObservableCollection est une collection de données dynamiques génériques qui fournit des notifications (à l'aide d'une interface « INotifyCollectionChanged ») lorsque des éléments sont ajoutés, supprimés, ou lorsque toute la collection est actualisée. Liste n'implémente INotifyCollectionChanged, l'interface utilisée par WPF ListBox mettre à jour l'interface utilisateur.

voir

  1. ObservableCollection <(Of <(T>)>) Classe
  2. une introduction à ObservableCollection dans WPF
  3. Liste vs vs ObservableCollection INotifyPropertyChanged dans Silverlight
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top