2012-06-01 2 views
1

나는 늦은 시간으로 인해 분명히 분명한 것을 놓치고있을 것입니다.내 사전에 변경 사항이 적용됩니다.

나는 MyObject 나는 내 웹 서비스를 쿼리 페이지로드에 처음 속성 bool IsFavoriate

을 갖도록 Dictionary<string,MyObject>로 정의 사전을 가지고 있고, 새로운 물체로 사전을 업데이트하고 IsolatedStorage이 저장합니다. 이 잘 결합

<ItemsControl ItemsSource="{Binding Categories, Mode=TwoWay}"> 
    <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <CheckBox IsChecked="{Binding Value.IsFavorite}" Content="{Binding Key}" /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
</ItemsControl> 

: 나는 체크 박스가 어디 UI를 들어

, 나는 ItemsControl에에 사전을 결합하고있다. 그러나 확인란을 선택하면 내 사전을 업데이트해야합니다.

아마도 MyObject의 전화 번호가 RaisePropertyChanged 일 필요합니까? 어쩌면 내가 지금 그 기회를 줄거야.

답변

2

당신은 당신의 MyObject 클래스에 INotifyPropertyChanged 인터페이스를 구현하고, 후자는 (초기 인구 후) 프로그램 업데이트되는 경우에, 당신의 IsFavorite 속성 setter에서 PropertyChanged 이벤트를 발생해야하고, 당신이 IsChecked 속성을 원하는 (그리고 CheckBox의 시각적 상태)가 변경 사항으로 업데이트됩니다.

귀하의 경우 업데이트는 다른 방향으로 전달되어야합니다 (IsChecked 속성에서 IsFavorite). 이는 일반적으로 바인딩을 Mode=TwoWay으로 설정하여 수행됩니다.

<ItemsControl ItemsSource="{Binding Categories, Mode=TwoWay}"> 
    <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <CheckBox IsChecked="{Binding Value.IsFavorite, Mode=TwoWay}" 
          Content="{Binding Key}" /> 
      </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

P. 나는 당신이 "내가 체크 체크를 선택하지만, 내 사전을 업데이 트하려는 의미라고 가정합니다. "

+0

오 남자, 나는 Mode = TwoWay를 실제 체크 박스와 ItemsControl에서 놓친 것을 믿을 수 없습니다. – earthling

+0

'ItemsSource'에서 나는 눈치 채지 못했습니다. 예, 아마도 쓸모가 없습니다. – Douglas

+1

그게 전부 였어. 어쩌면 또 다른 레드 불을위한 시간 :) – earthling

관련 문제