我有一个ObservableCollection SettingsModel有一个字符串和bool。现在我正在设置设置页面,包含开关列表框。
<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以某种方式抛出通知?
答案 0 :(得分:2)
以防万一,其他任何人都会遇到同样的问题,这是样本,使用mvvm light。
public class SettingsModel : ViewModelBase
{
private bool _value;
public bool Value
{
get { return _value; }
set { Set(() => Value, ref _value, value); }
}
private string _kind;
public string Kind
{
get { return _kind; }
set { Set(() => Kind, ref _kind, value); }
}
}