0

いいえ、複数のチェックボックスを作成するボタンを作成しました。wp7 のクリック数。私がそれに使用したコードの下。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
 <TextBox x:Name="txtNewTask" HorizontalAlignment="Left" Height="72" TextWrapping="Wrap" VerticalAlignment="Top" Width="328"/>
 <Button x:Name="btnAdd" Content="add" HorizontalAlignment="Left" Margin="328,0,0,0" VerticalAlignment="Top" Width="123" Click="btnAdd_Click"/>
 <ListBox x:Name="lbToDoList" Margin="0,72,0,0">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <CheckBox Click="CheckBox_Click" Background="{x:Null}">
         <StackPanel Orientation="Horizontal">
           <TextBlock Text="{Binding}" Name="tbkTextName" VerticalAlignment="Center" Margin="5,0,5,0" />
         </StackPanel>
       </CheckBox>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>
</Grid>

アプリを終了して再度開くと、チェックボックスがオフになり (デフォルト状態)、状態が保存されません。そのチェックボックスに使用x:Nameすると、状態を保存できますが、すべてのチェックボックスが同じ名前に割り当てられているため、すべてのチェックボックスの状態が同じになります。

アプリがアクティブなとき

アプリがアクティブなとき

アプリの再起動時

アプリの再起動時

リストボックス内にあるチェックボックスの状態を保存するのを手伝ってくれる人はいますか?

4

1 に答える 1

0

これは次のことを行う必要があります。

XAML:

<TextBox x:Name="txtNewTask" HorizontalAlignment="Left" Height="72" TextWrapping="Wrap" VerticalAlignment="Top" Width="328"/>
<Button x:Name="btnAdd" Content="add" HorizontalAlignment="Left" Margin="328,0,0,0" VerticalAlignment="Top" Width="123" Click="btnAdd_Click"/>
<ListBox Grid.Row="1" x:Name="lbToDoList" Margin="0,72,0,0">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" Background="{x:Null}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}" Name="tbkTextName" VerticalAlignment="Center" Margin="5,0,5,0" />
                </StackPanel>
            </CheckBox>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

コードビハインド:

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; }
}
于 2014-04-14T20:32:31.017 に答える