Xamarin Cross Platform Picker неправильно связывается - PullRequest
0 голосов
/ 17 февраля 2019

Я новичок в приложениях Xamarin Cross Platform

Я пытаюсь привязать элемент Item Picker к списку и отобразить одно свойство без успеха!Моя ссылка была отсюда

Пожалуйста, кто-нибудь может посоветовать, где моя ошибка, мой взгляд или Xmal, пожалуйста (или, вероятно, оба)

Список представляет собой списокStdGrades определено как

namespace FitRestults_Dev1
{
    class StdGrade 
    {
        public string Gradelbl
        { get; set; }
        public string Grade
        { get; set; }

        public static List<StdGrade> Grades()
        {
            List<StdGrade> GradesList = new List<StdGrade>(){
                new StdGrade(){ Gradelbl="10th Gup (White belt)", Grade="G10"},
                new StdGrade(){ Gradelbl="9th Gup (Organge belt)", Grade="G9"},
                new StdGrade(){ Gradelbl="8th Gup (Organge belt 1 tag)", Grade="G8"},
               ... };

                return GradesList;

        }  

            public List<StdGrade> GradesList => Grades();


            public static string GetGrade(string Input)
        {
            List<StdGrade> GradesList = Grades();
            var result = (from r in GradesList where r.Gradelbl == Input select r).First();

            return result.Grade;


        }

    }

Для страницы содержимого я определил простое представление как

    namespace FitRestults_Dev1
{
    class AddStudentView 
    {
        List<StdGrade> _GradeList;

            public List<StdGrade> GradeList

        { get => _GradeList;
            set
            {
                _GradeList = StdGrade.Grades();

            }
        }
    }
}

Моя страница содержимого xmal имеет значение

    <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="FitRestults_Dev1.AddStudent"
             xmlns:src="clr-namespace:FitRestults_Dev1"
             >
     <ContentPage.BindingContext>
            <src:AddStudentView/>
        </ContentPage.BindingContext>
    <ContentPage.Content>

        <StackLayout Padding="10" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
            <Grid>
                …
                <Picker x:Name="GradePicker" Title="Select a Grade" Grid.Row="2" Grid.Column="1" MinimumWidthRequest="100" FontSize="12"
                     ItemsSource="GradeList" SelectedIndex="0" ItemDisplayBinding="{Binding Gradelbl}">
                </Picker>
            </StackLayout>
    </ContentPage.Content>
</ContentPage>

1 Ответ

0 голосов
/ 17 февраля 2019

Вы предоставляете itemsSource неверным способом, которым должна быть привязка

  ItemsSource={Binding GradeList}

Также прекратите использовать Generic.List для привязки, MVVM с формами Xamarin должен иметь ObservableCollections, поскольку он наследуется от INotifyPropertyChangedи INotifyCollectionChanged

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