Domanda

I cercando di legare List per Listbox. E al metodo di Button1Click nuova istanza di MyClass aggiunge nella mia lista <>, ma che non visibile nella mia casella di riepilogo. C'è il mio codice:

       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;
                }
}

E 'il mio episodio forma e 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",
                            });
}

Quello che ho fatto di sbagliato?

È stato utile?

Soluzione

Si dovrebbe usare ObservableCollection<Node> invece di List<Node>. ObservableCollection è una raccolta di dati dinamici generico che fornisce notifiche (utilizzando un'interfaccia "INotifyCollectionChanged") quando vengono aggiunti elementi, rimossi, o quando l'intera collezione viene aggiornata. Elenco non implementa INotifyCollectionChanged, quale interfaccia è utilizzata per WPF ListBox aggiornare UI.

vedere

  1. ObservableCollection <(Of <(T>)>) Classe
  2. Introduzione alla ObservableCollection in WPF
  3. Lista vs ObservableCollection vs INotifyPropertyChanged in Silverlight
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top