1

私はおそらく遅い時間のために明白な何かを逃しています。

Dictionary<string,MyObject>私はそのように定義された辞書を持っMyObjectていますbool IsFavoriate

最初にページの読み込み時に、Webサービスにクエリを実行し、新しいオブジェクトでディクショナリを更新して、これをIsolatedStorageに保存します。

UIの場合、チェックボックスがあるItemsControlにディクショナリをバインドしています。

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

これはうまくバインドします。ただし、チェックボックスを選択すると、辞書が更新されます。

おそらく、プロパティをMyObject呼び出す必要がありますRaisePropertyChangedか?多分私は今のところそのショットを与えるでしょう。

4

1 に答える 1

2

クラスにINotifyPropertyChangedインターフェイスを実装し、プロパティ セッターからイベントを発生させる必要があります。これは、後者がプログラムによって (初期設定後に) 更新される可能性があり、プロパティ (および の表示状態) を更新する必要がある場合に備えます。あなたの変更で。MyObjectPropertyChangedIsFavoriteIsCheckedCheckBox

あなたの場合、更新を逆方向に (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>

PS私はあなたが「チェックボックスを選択すると、しかし辞書を更新したい」という意味であると仮定してます 。」</p>

于 2012-06-01T11:26:32.750 に答える