2012-02-09 3 views
1

나는과 같이 데이터로 채워 2 개리스트 박스가 있습니다왜 Silverlight 바인딩이 작동하지 않습니까?

GoogleNewsResults.Add(
      new News() 
      { 
      Content = "News Content", Title = "News Title" 
      }); 
NotifyPropertyChanged("GoogleNewsResults"); 
GoogleBlogsResults.Add(
      new Blog() 
      { 
      Content = "Blog Content", Title = "Blog Title" 
      }); 
NotifyPropertyChanged("GoogleBlogsResults"); 

을하지만 업데이트 블로그 결과 목록 상자 나던. 왜 그런지 알고 있니?

<sllb:ListBox x:Name="GoogleBlogsList" ItemsSource="{Binding GoogleBlogsResults, Mode=TwoWay}" /> 

답변

1

Tutorial 당신에게

도움이 될 수 있습니다 난 당신이

DataContext="{Binding Source={StaticResource CustomerContainerObject}}" 

또는

<ListBox ItemsSource="{Binding}"> 
<ListBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding Name}"></TextBlock> 
    </DataTemplate> 
</ListBox.ItemTemplate>       

XAML에서 바인딩 소스에 필요가 있다고 생각 : XAML 바인딩의 유형이
var employees = new List<Employee>() 
{ 
new Employee { Name = "Scott" }, 
new Employee { Name = "Poonam"}, 
new Employee { Name = "Paul" } 
}; 
this.DataContext = employees; 

도움을 받으십시오.

1

직접 INotifyProperityChanged 인터페이스를 구현하는 대신 목록 항목에 ObservableCollection<T>을 사용할 수 있습니다. ObservableCollection은 INotifyProperityChanged가 구현 된 컬렉션 클래스이므로 업데이트 할 바인딩에 대해 "NotifyPropertyChanged"를 수동으로 호출 할 필요가 없습니다.

올바른 DataContext가 있는지 확인하십시오. MVVM 디자인 패턴을 사용하고 있지 않다면 그 패턴을 조사해보십시오. 객체 참조가 변경되지 않았습니다과 같이이 문제를 해결 할 수는

NotifyPropertyChanged("GoogleBlogsResults"); 

를 호출 할 때 GoogleBlogsResults으로

2

속성은 불에 바인딩 엔진이 실행되지 않습니다 그것을 항목을 추가,

List<Blog> 

입니다

ObservableCollection<Blog> 

을 사용하여 T.Ho에 의해 기술 된 해결책을 컬렉션 내의 아이템 (신구 항목 병합) 새로운

List<Blog> 

객체를 생성하고 상기 새로운리스트에 GoogleBlogsResults 속성을 설정함으로써 대안 적으로 변형 될 때 또는 자동 바인딩 엔진을 트리거한다.

희망이 도움이됩니다.

관련 문제