坚持更改我的字典

时间:2012-06-01 11:21:03

标签: c# windows-phone-7 data-binding mvvm-light

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

我有一个字典定义为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中拥有这些属性?也许我现在就试一试。

1 个答案:

答案 0 :(得分: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>

P.S。我假设你的意思是“当我选择 检查复选框时,我希望我的词典更新。 “