[英]Why Silverlight binding doesnt work?
我有2个列表框,其中填充了如下数据:
GoogleNewsResults.Add(
new News()
{
Content = "News Content", Title = "News Title"
});
NotifyPropertyChanged("GoogleNewsResults");
GoogleBlogsResults.Add(
new Blog()
{
Content = "Blog Content", Title = "Blog Title"
});
NotifyPropertyChanged("GoogleBlogsResults");
但是,它不会更新“博客结果”列表框。 你知道为什么吗? XAML具有以下类型的绑定:
<sllb:ListBox x:Name="GoogleBlogsList" ItemsSource="{Binding GoogleBlogsResults, Mode=TwoWay}" />
由于您的GoogleBlogsResults属性是
List<Blog>
向其中添加项目不会触发绑定引擎触发,因为调用时对象引用未更改
NotifyPropertyChanged("GoogleBlogsResults");
您可以通过使用以下方法遵循T.Ho描述的解决方案来解决此问题:
ObservableCollection<Blog>
当集合中的项目被修改时,或者通过生成一个新的,它会自动触发绑定引擎
List<Blog>
对象(合并新旧项目),并将GoogleBlogsResults属性设置为新列表。
希望这可以帮助。
本教程可能会帮助您
我认为您需要在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;
希望有帮助。
您可能要使用ObservableCollection<T>
代替您自己的列表项,而不是自己实现INotifyProperityChanged接口。 ObservableCollection是一个实现了INotifyProperityChanged的集合类,因此您不必手动调用“ NotifyPropertyChanged”即可更新绑定。
确保您具有正确的DataContext。 如果您不使用MVVM设计模式,则可能需要调查一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.