WPF バインディングが機能しないのはなぜですか?
-
20-09-2019 - |
質問
リストをリストボックスにバインドしようとしています。そして、Button1Click メソッドで、MyClass の新しいインスタンスが List<> に追加されますが、リストボックスには表示されません。そこに私のコードがあります:
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;
}
}
それは私のフォームエピソードと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",
});
}
私の何が間違っているのでしょうか?
解決
使用する必要があります ObservableCollection<Node>
の代わりに List<Node>
. 観察可能なコレクション 通知を提供する汎用の動的データ コレクションです (インターフェイスを使用します)。INotifyCollectionChanged
") 項目が追加、削除されたとき、またはコレクション全体が更新されたとき。リストは実装されていません INotifyCollectionChanged
, 、このインターフェイスは、WPF ListBox が UI を更新するために使用します。
見る
所属していません StackOverflow