0

私はSettingsModelの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 に通知をスローさせる必要がありますか?

4

1 に答える 1

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); }
    }
}
于 2013-04-22T14:55:33.257 に答える