我有一个设置模型的 ObservableCollection 有一个字符串和布尔值。现在我正在制作带有开关列表框的设置页面。
<Grid>
<ListBox
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Margin="0,0,0,0"
ItemsSource="{Binding Path=SettingsItems, Mode=TwoWay}"
ItemContainerStyle="{StaticResource ListBoxItemsStrerchedStyle}" >
<ListBox.ItemTemplate>
<DataTemplate>
<toolkit:ToggleSwitch
Header="{Binding kind}"
Content="{Binding value}"
IsChecked="{Binding value, Mode=TwoWay}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
问题是当用户改变开关状态时,它不是上升通知(内容没有改变)。此外,如果向下滚动列表(大约 30 个项目)然后向上滚动,一些开关正在改变它们的状态。
我应该使用ObservableDictionary(它看起来很过时),还是让 SettingsModel 以某种方式抛出通知?