我有两个数据库填充的列表框如下:
GoogleNewsResults.Add(
new News()
{
Content = "News Content", Title = "News Title"
});
NotifyPropertyChanged("GoogleNewsResults");
GoogleBlogsResults.Add(
new Blog()
{
Content = "Blog Content", Title = "Blog Title"
});
NotifyPropertyChanged("GoogleBlogsResults");
但它不会更新Blog Results列表框。你知道为什么吗? XAML具有这种类型的绑定:
<sllb:ListBox x:Name="GoogleBlogsList" ItemsSource="{Binding GoogleBlogsResults, Mode=TwoWay}" />
答案 0 :(得分:2)
由于您的GoogleBlogsResults属性是
List<Blog>
向其添加项目不会触发绑定引擎,因为在调用
时对象引用未更改 NotifyPropertyChanged("GoogleBlogsResults");
您可以通过使用
按照T.Ho描述的解决方案来解决此问题 ObservableCollection<Blog>
在修改集合中的项目时或者通过生成新的
时自动触发绑定引擎 List<Blog>
object(合并新旧项目)并将GoogleBlogsResults属性设置为新列表。
希望这有帮助。
答案 1 :(得分:1)
此Tutorial可能会帮助您
我认为您需要在XAML中绑定源
DataContext="{Binding Source={StaticResource CustomerContainerObject}}"
或
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
var employees = new List<Employee>()
{
new Employee { Name = "Scott" },
new Employee { Name = "Poonam"},
new Employee { Name = "Paul" }
};
this.DataContext = employees;
希望有所帮助。
答案 2 :(得分:1)
您可能希望使用ObservableCollection<T>
代替您的列表项,而不是自己实现INotifyProperityChanged界面。 ObservableCollection是一个实现了INotifyProperityChanged的集合类,因此您不必手动调用“NotifyPropertyChanged”来更新绑定。
确保您拥有正确的DataContext。如果您没有使用MVVM设计模式,您可能需要研究它。