C# 坚持对我的字典进行更改
由于时间太晚,我可能错过了一些明显的东西 我有一个定义为C# 坚持对我的字典进行更改,c#,windows-phone-7,data-binding,mvvm-light,C#,Windows Phone 7,Data Binding,Mvvm Light,由于时间太晚,我可能错过了一些明显的东西 我有一个定义为dictionary的字典,其中MyObject有一个属性bool isfavoritate 最初在页面加载时,我查询我的web服务,并使用任何新对象更新字典,并将其保存在IsolatedStorage中 对于UI,我将字典绑定到ItemsControl,其中有一个复选框: <ItemsControl ItemsSource="{Binding Categories, Mode=TwoWay}"> <ItemsC
dictionary
的字典,其中MyObject
有一个属性bool isfavoritate
最初在页面加载时,我查询我的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
callRaisePropertyChanged
中的属性?也许我现在可以试一试。您需要在MyObject
类上实现INotifyPropertyChanged
接口,并从IsFavorite
属性设置器中引发PropertyChanged
事件,如果后者可以通过编程方式更新(在初始填充之后),您希望IsChecked
属性(以及复选框
的可视状态)随更改而更新
在您的情况下,您希望以相反的方式传播更新(从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>
另外,我假设你的意思是“当我选中复选框时,我希望我的字典更新。”哦,伙计,我真不敢相信我错过了模式=实际复选框与项目控件的双向性。。。我会调查的。我在
项目资源上没有注意到它。是的,那可能没用。就是这样。也许是时候再来一头红牛了:)