У меня есть Listview, с кучей «модулей» в одной ObservableCollection, которая была установлена как ItemsSource. Эта коллекция была установлена как:
public static ObservableCollection<Module> Modules { get; set; }
в App.xaml.cs, чтобы сделать ее глобальной.
Когда я нажимаю флажок в списке, он запускает эту функцию:
private void ModuleCheckbox_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
var checkbox = (CheckBox)sender;
var item = (Module)checkbox.BindingContext;
item.ModuleIsChecked = checkbox.IsChecked;
foreach(Module m in App.Modules)
{
Console.WriteLine(m.Name + " Value: " + m.ModuleIsChecked);
}
}
Как видите, я пытаюсь установить свойство: ModuleIsChecked
таким же, как флажок, который в этом случае должен быть истинным или ложным. Теперь, когда я нажимаю флажок, и foreach-l oop проходит через, значения верны. Когда я go перехожу на новую "страницу" с помощью функции Navigation.PushAsync(new NewSite());
и снова запускаю l oop, ни один из модулей не имеет значения ModuleIsChecked
, как установлено ранее. Как это возможно?
Модуль имеет следующие атрибуты:
public string Description { get; set; }
public bool IsVisible { get; set; }
public bool ModuleIsChecked { get; set; }
public ObservableCollection<Question> QuestionList { get; set; }
edit в соответствии с запросом, вот код на новой странице, где я запускаю ту же список, чтобы увидеть, были ли мои выборки «застряли» в этой ObservableCollection:
public partial class NewSite : ContentPage
{
public Questions()
{
InitializeComponent();
BindingContext = new App();
foreach(Module m in App.Modules)
{
Console.WriteLine("Module: {0} ModuleisChecked: {1}", m.Name, m.ModuleIsChecked);
}
И здесь, Консоль показывает, что все значения являются Ложными. Любые идеи?