Я создаю приложение для свойств, в котором у меня есть один файл для 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 кнопки не отображаются.
В эмуляторе Android отображается список строк, которые я предоставил в LandingViewModel.cs, а переключатели не отображаются.
Ваш xaml, описывающий ваше представление, отсутствует, возможно, проблема связана с ним.
В отличие от вашего объекта Properties, вашsectionList не обновляет значение, отправленное в пользовательский интерфейс.
Итак, эта линия
public List<string> Sections = new List<string> { "Trending", "Popular", "Buy", "Rent" };
должно быть
public List<string> Sections => new List<string> { "Trending", "Popular", "Buy", "Rent" };
Сообщение об ошибке довольно понятно:
SectionList.Children
— это массив без элементов. Нам нужно посмотреть, как выглядит ваше представление, чтобы понять, почему оно пусто.