如何在ListBox windows phone 8中保存复选框状态

时间:2015-05-07 05:49:08

标签: windows-phone-8

我在列表框中有一个列表框和一个复选框。 XAML代码如下

  <ListBox Name="list_locationAddFinal"  ItemContainerStyle="{StaticResource ListBoxCheckedStyle}" LayoutUpdated="list_locationAddFinal_LayoutUpdated" Foreground="Black" Visibility="Collapsed">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <CheckBox   Visibility="Visible" Background="Black" IsChecked="{Binding IsChecked,Mode=TwoWay}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
                            <TextBlock x:Name="item_name" Text="{Binding Name, Mode=OneWay}" Padding="5,15,5,15" Width="400"  TextWrapping="Wrap" FontSize="{StaticResource PhoneFontSizeLarge}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

现在当用户检查复选框时我想保存已检查状态,当我打开我的应用程序时,复选框未显示已选中 感谢

我的后端代码是

 public class SampleCheckedData
{
    public bool IsChecked
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }

    public string Icon
    {
        get;
        set;
    }
}
 private void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        ListBoxItem checedItem = this.list_locationAddFinal.ItemContainerGenerator.ContainerFromItem((sender as CheckBox).DataContext) as ListBoxItem;
        if (checedItem != null)
        {
            checedItem.IsSelected = true;
        }
    }`
  private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
    {
        ListBoxItem checedItem = this.list_locationAddFinal.ItemContainerGenerator.ContainerFromItem((sender as CheckBox).DataContext) as ListBoxItem;
        if (checedItem != null)
        {
            checedItem.IsSelected = false;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

每当您启动应用程序时,所有变量/控件等都会初始化为其默认值。

为了&#34;保存&#34;在您的复选框状态下,您需要将信息存储到一个并不总是被初始化的地方,或者用简单的单词&#34;不会重置&#34;。

实现这一目标的一种方法是使用 IsolatedStorage 。 它类似于我们在一些基本编程语言(如C和C ++)中使用的数据文件处理概念。

使用复选框的Checked和Unchecked事件将特定值写入您的文件。在页面加载事件中,您始终可以打开此文件以检查其值并相应地设置控件的状态。

您可以找到IsolatedStorage示例here

Checkbox事件的代码有点像这样: -

private void CHK_Checked(object sender, RoutedEventArgs e)
        {
            var appStorage2 = IsolatedStorageFile.GetUserStoreForApplication();

            string filename2 = "stored_value.txt";
            using (var file = appStorage2.OpenFile(filename2, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
            {

                using (var writer = new StreamWriter(file))
                {
                    writer.Write("1");
                }
            }
        }

        private void CHK_Unchecked(object sender, RoutedEventArgs e)
        {
            var appStorage2 = IsolatedStorageFile.GetUserStoreForApplication();

            string filename2 = "stored_value.txt";
            using (var file = appStorage2.OpenFile(filename2, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
            {

                using (var writer = new StreamWriter(file))
                {
                    writer.Write("0");
                }
            }
        }