Windows phone 7 保存包含wp7复选框的列表框的状态

Windows phone 7 保存包含wp7复选框的列表框的状态,windows-phone-7,Windows Phone 7,我创建了一个按钮来创建wp7点击次数的多个复选框。下面是我使用的代码 现在,当我退出并重新打开我的应用程序时,复选框被取消选中(默认状态),并且它们的状态未保存。如果我对该复选框使用x:Name,那么我可以保存状态,但由于所有复选框都分配给相同的名称,因此所有复选框状态都变为相同 当应用程序处于活动状态时 重新激活应用程序时 有人能帮我保存列表框中的复选框状态吗?这应该可以: XAML: 代码隐藏: public partial class MainPage:PhoneApplica

我创建了一个按钮来创建wp7点击次数的多个复选框。下面是我使用的代码


现在,当我退出并重新打开我的应用程序时,复选框被取消选中(默认状态),并且它们的状态未保存。如果我对该复选框使用
x:Name
,那么我可以保存状态,但由于所有复选框都分配给相同的名称,因此所有复选框状态都变为相同

当应用程序处于活动状态时

重新激活应用程序时

有人能帮我保存列表框中的复选框状态吗?

这应该可以:

XAML:


代码隐藏:

public partial class MainPage:PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        lbToDoList.ItemsSource = IsolatedStorageHelper.Instance.Tasks;
    }

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        base.OnNavigatedFrom(e);
        IsolatedStorageHelper.Instance.Save();
    }

    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        IsolatedStorageHelper.Instance.Tasks.Add(new MyTask()
        {
            Name = txtNewTask.Text
        });
    }
}

public class IsolatedStorageHelper
{
    public static IsolatedStorageHelper Instance = new IsolatedStorageHelper();
    private IsolatedStorageSettings Settings = IsolatedStorageSettings.ApplicationSettings;
    public ObservableCollection<MyTask> _tasks;
    public ObservableCollection<MyTask> Tasks
    {
        get
        {
            if (_tasks == null)
            {
                if (!Settings.Contains("Tasks"))
                    Settings["Tasks"] = new List<MyTask>();
                _tasks = new ObservableCollection<MyTask>((List<MyTask>)Settings["Tasks"]);
                _tasks.CollectionChanged += _tasks_CollectionChanged;
            }
            return _tasks;
        }
    }

    void _tasks_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        Save();
    }

    public void Save()
    {
        Settings["Tasks"] = _tasks.ToList();
    }
}
public class MyTask
{
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}
public部分类主页:PhoneApplicationPage
{
公共主页()
{
初始化组件();
}
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
基地。导航到(e);
lbToDoList.ItemsSource=IsolatedStorageHelper.Instance.Tasks;
}
受保护的覆盖无效OnNavigatedFrom(NavigationEventArgs e)
{
基于(e)的导航;
IsolatedStorageHelper.Instance.Save();
}
私有无效btnAdd_单击(对象发送者,路由目标e)
{
IsolatedStorageHelper.Instance.Tasks.Add(new MyTask())
{
Name=txtNewTask.Text
});
}
}
公共类IsolatedStorageHelper
{
公共静态IsolatedStorageHelper实例=新IsolatedStorageHelper();
私有隔离存储设置=隔离存储设置。应用程序设置;
公共观察收集任务;
公共可观察收集任务
{
得到
{
如果(_tasks==null)
{
如果(!Settings.Contains(“任务”))
设置[“任务”]=新列表();
_任务=新的ObservableCollection((列表)设置[“任务]);
_tasks.CollectionChanged+=\u tasks\u CollectionChanged;
}
返回任务;
}
}
void\u tasks\u CollectionChanged(对象发送方,NotifyCollectionChangedEventArgs e)
{
Save();
}
公共作废保存()
{
设置[“任务”]=“u Tasks.ToList();
}
}
公共类MyTask
{
公共字符串名称{get;set;}
已检查公共布尔值{get;set;}
}

它被称为“保存状态”。有多种方法可以实现这一目标。这里有一个例子:@Eugene还有其他方法吗,因为上面的例子对我不适用!正如我前面提到的,还有很多其他的方法。如果你在谷歌上搜索“WinPhoneSaveState”,希望你能找到适合你的东西。没有“伞式”解决方案,这取决于您在解决方案中使用了什么。
public partial class MainPage:PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        lbToDoList.ItemsSource = IsolatedStorageHelper.Instance.Tasks;
    }

    protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
        base.OnNavigatedFrom(e);
        IsolatedStorageHelper.Instance.Save();
    }

    private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        IsolatedStorageHelper.Instance.Tasks.Add(new MyTask()
        {
            Name = txtNewTask.Text
        });
    }
}

public class IsolatedStorageHelper
{
    public static IsolatedStorageHelper Instance = new IsolatedStorageHelper();
    private IsolatedStorageSettings Settings = IsolatedStorageSettings.ApplicationSettings;
    public ObservableCollection<MyTask> _tasks;
    public ObservableCollection<MyTask> Tasks
    {
        get
        {
            if (_tasks == null)
            {
                if (!Settings.Contains("Tasks"))
                    Settings["Tasks"] = new List<MyTask>();
                _tasks = new ObservableCollection<MyTask>((List<MyTask>)Settings["Tasks"]);
                _tasks.CollectionChanged += _tasks_CollectionChanged;
            }
            return _tasks;
        }
    }

    void _tasks_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        Save();
    }

    public void Save()
    {
        Settings["Tasks"] = _tasks.ToList();
    }
}
public class MyTask
{
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}