由于时间已晚,我可能会遗漏一些明显的东西。
我有一个字典定义为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
中拥有这些属性?也许我现在就试一试。
答案 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。我假设你的意思是“当我选择 检查复选框时,我希望我的词典更新。 “