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