繁体   English   中英

为什么Silverlight绑定不起作用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM