1

由于时间已晚,我可能遗漏了一些明显的东西。

我有一个这样定义的字典,Dictionary<string,MyObject>其中MyObject有一个属性bool IsFavoriate

最初在页面加载时,我查询我的 Web 服务,并使用任何新对象更新 Dictionary 并将其保存在 IsolatedStorage 中。

对于 UI,我将 Dictionary 绑定到一个 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在您的类上实现接口MyObject并从属性设置器引发PropertyChanged事件,以防IsFavorite后者可能以编程方式更新(在初始填充之后),并且您希望更新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>

PS 我假设你的意思是“当我选中一个 复选框时,我希望我的字典更新。”</p>

于 2012-06-01T11:26:32.750 回答