System.ArgumentOutOfRangeException при установке RadioButton IsChecked в MAUI

Я создаю приложение для свойств, в котором у меня есть один файл для LandingPage.cs и другой для LandingViewModel.cs. Цель состоит в том, чтобы привязать список разделов к переключателям и установить первый переключатель как отмеченный. Однако я сталкиваюсь с ошибкой при попытке установить первый переключатель как отмеченный. Вот мой код:

// LandingViewModel.cs
using PropertyApp.Model;
using PropertyApp.View;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace PropertyApp.ViewModel
{
    public class LandingViewModel : BaseViewModel
    {
        public List<string> Sections = new List<string> { "Trending", "Popular", "Buy", "Rent" };

        public List<Property> Properties => PropertyRepo.AllProperties;

        public Property SelectedProperty { get; set; }

        public ICommand PropertySelected => new Command(obj =>
        {
            if (SelectedProperty != null)
                Application.Current.MainPage.Navigation.PushAsync(new DetailsPage(SelectedProperty));
            SelectedProperty = null;
        });
    }
}

// LandingPage.cs
using PropertyApp.ViewModel;

namespace PropertyApp.View
{
    public partial class LandingPage : ContentPage
    {
        public LandingPage()
        {
            InitializeComponent();
            this.BindingContext = new LandingViewModel();
            (SectionList.Children[0] as RadioButton).IsChecked = true;
        }
    }
}

используя эту строку

(SectionList.Children[0] as RadioButton).IsChecked = true;

Получил эту ошибку System.ArgumentOutOfRangeException: 'Индекс вышел за пределы допустимого диапазона. Должно быть неотрицательным и меньше размера коллекции. (Параметр «индекс»)

Может ли кто-нибудь сказать мне, где я ошибаюсь? Я хочу активировать переключатели для указанного списка разделов, но в эмуляторе Android кнопки не отображаются.

Сообщение об ошибке довольно понятно: SectionList.Children — это массив без элементов. Нам нужно посмотреть, как выглядит ваше представление, чтобы понять, почему оно пусто.

MindSwipe 29.05.2024 13:51

В эмуляторе Android отображается список строк, которые я предоставил в LandingViewModel.cs, а переключатели не отображаются.

Mohini A 29.05.2024 16:30

Ваш xaml, описывающий ваше представление, отсутствует, возможно, проблема связана с ним.

Shenron 29.05.2024 18:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В отличие от вашего объекта Properties, вашsectionList не обновляет значение, отправленное в пользовательский интерфейс.

Итак, эта линия

public List<string> Sections = new List<string> { "Trending", "Popular", "Buy", "Rent" };

должно быть

public List<string> Sections => new List<string> { "Trending", "Popular", "Buy", "Rent" };

Другие вопросы по теме