我在列表框中有一个列表框和一个复选框。 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;
}
}
}
答案 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");
}
}
}