Xamarin.Forms, средство выбора, проблема с отображением SelectedItem - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение Xamarin.Forms, на странице есть два средства выбора. Тогда у меня есть модель представления для этой страницы:

public class ExpenseEntriesViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public ExpenseEntriesViewModel()
    {
        // getting data from server here

        if (ExpenseEntriesDateRangeInfo.AvailableYears.Count > 0)
        {
            // AvailableYears is List<int>
            SelectedYear = ExpenseEntriesDateRangeInfo.AvailableYears.Max();
        }

        SelectedMonth =
            // AvailableMonths is List<MonthValue>
            ExpenseEntriesDateRangeInfo.AvailableMonths.FirstOrDefault(i => i.MonthNumber == DateTime.Today.Month);
    }

    public DateRangeInfo ExpenseEntriesDateRangeInfo { get; set; }

    private int _selectedYear;
    public int SelectedYear
    {
        get => _selectedYear;
        set
        {
            _selectedYear = value;
            OnPropertyChanged();
        }
    }

    private MonthValue _selectedMonth;
    public MonthValue SelectedMonth
    {
        get => _selectedMonth;
        set
        {
            _selectedMonth = value;
            OnPropertyChanged(nameof(SelectedMonth));
        }
    }

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Вот модель MonthValue:

public class MonthValue
{
    public int MonthNumber { get; set; }
    public string MonthName { get; set; }
}

Модели и данные верны, я прошел код с отладчиком и проверил. XAML разметка сборщиков:

<Picker Title="Month"
                        HorizontalOptions="FillAndExpand"
                        ItemsSource="{Binding ExpenseEntriesDateRangeInfo.AvailableMonths}"
                        ItemDisplayBinding="{Binding MonthName}"
                        SelectedItem="{Binding SelectedMonth, Mode=TwoWay}"/>
<Picker Title="Year"
                        HorizontalOptions="FillAndExpand"
                        ItemsSource="{Binding ExpenseEntriesDateRangeInfo.AvailableYears}"
                        SelectedItem="{Binding SelectedYear, Mode=TwoWay}"/>

Год сборщика привязывается к списку int, работает отлично. Средство выбора месяца работает с массивом MonthValue и не отображает свойство MonthName в качестве имени SelectedItem, это проблема. Есть ли решение или мысли? Довольно простой случай, как для меня.

ОБНОВЛЕНИЕ. Добавлен проект с демоверсией проблемы здесь

Он протестирован на реальном устройстве Android (Android 6.0, API 23)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...