public void AddCategoriesOption(CategoriesListApiViewModel categories, int regionId) { CategoriesList.TryGetValue(regionId, out Dictionary <string, UniversalSwitchViewModel> dictionaryForRegion); bool IsExist = dictionaryForRegion != null; if (!IsExist) { dictionaryForRegion = new Dictionary <string, UniversalSwitchViewModel>(); } foreach (var category in categories.Category) { dictionaryForRegion.Add(category.Value, new UniversalSwitchViewModel { Id = category.Key, Value = false }); } if (IsExist) { CategoriesList[regionId] = dictionaryForRegion; } else { CategoriesList.Add(regionId, dictionaryForRegion); } }
protected override void OnAppearing() { base.OnAppearing(); var fakeRegionId = 1; var fakeCategories = new CategoriesListApiViewModel { //It's ditionary of IDs and nameOf Category = new Dictionary <long, string> { { 0, "test1" }, { 1, "test2" }, { 32, "test3" }, { 14, "test4" } } }; _pageViewModel.AddCategoriesOption(fakeCategories, fakeRegionId); //adding switches foreach (var category in fakeCategories.Category) { var checkbox = new Switch { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center }; checkbox.SetBinding(Switch.IsToggledProperty, $"{nameof(_pageViewModel.CategoriesList)}[{fakeRegionId}].Value[{category.Value}].{nameof(UniversalSwitchViewModel.Value)}", BindingMode.TwoWay); //to test purpose only: checkbox.Toggled += (s, eventHanderArgumets) => { Console.WriteLine($"Swtich name {category.Value} with value: {_pageViewModel.CategoriesList[fakeRegionId][category.Value].Value}"); }; //end _layout.Children.Add(checkbox); } //test binding var testData = new List <string> { "test1", "test3" }; _pageViewModel.SetCategoriesOption(testData, fakeRegionId); }