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
call
RaisePropertyChanged
中的属性?也许我现在可以试一试。

您需要在
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>


另外,我假设你的意思是“当我选中复选框时,我希望我的字典更新。”

哦,伙计,我真不敢相信我错过了模式=实际复选框与项目控件的双向性。。。我会调查的。我在
项目资源上没有注意到它。是的,那可能没用。就是这样。也许是时候再来一头红牛了:)