2015-01-06 1 views
1

뒤에 코드에서 나는 ItemsCollection이 때문에 같은 객체의 배열에 바인딩되고있다 : 나는 버튼을 누르 기반으로 ItemsSource를 변경할 수 있도록하려면업데이트 크리스마스에 바인딩 WPF하지만

<ItemsControl x:Name="Graph" ItemsSource="{Binding MyData.ItemsData}">... 

그래서 그것은 코드 숨김 이동과 같이 :

Analyzer.Graph.SetBinding(ListView.ItemsSourceProperty, 
       new Binding { Source = MyViewModel.MyData.ItemsData }); 

내 문제는 코드 숨김에서 바인딩을 설정할 때이 변경 될 때 XAML에서 설정할 때 인 반면, 데이터가 업데이트되지 않는 것입니다.

내 데이터 클래스는 다음과 같습니다

private DataFreq[] _itemsData; 
public DataFreq[] ItemsData 
{ 
    get { return _itemsData; } 
    set 
    { 
     _itemsData = value; 
     NotifyPropertyChanged("ItemsData"); 
    } 
} 

그리고 다음과 같이 설정되는 : 왜 이런 일

DataFreq[] tmpdata = new DataFreq[30]; 
...add data to tmpdata here 
MyViewModel.MyData.ItemsData = data; 

사람이 설명 할 수 있습니까?

감사합니다.

답변

0

바인딩의 Source은 속성 자체가 아니라 속성을 호스팅하는 개체입니다.

당신이 원하는 : 당신이 이미 변경 될 때 알려주는 "ItemsData"속성이 있기 때문에

Analyzer.Graph.SetBinding(ListView.ItemsSourceProperty, 
      new Binding("ItemsData") { Source = MyViewModel.MyData }); 

그러나, 그럼 그냥 바인딩보다는 그 변경합니다. 바인딩은 뷰와 뷰 모델을 결합하는 방법 일뿐입니다. 데이터 소스가 버튼 누름으로 인해 변경되어야하는 경우 데이터 소스는보기가 아닌보기 모델에서 변경되어야합니다.

+0

완벽한, 감사합니다! 또한 여기가 중복 된 것으로 생각하십시오. http://stackoverflow.com/questions/357033/c-sharp-data-binding-doesnt-update-wpf?rq=1 – user2424495