【问题标题】:Xamarin Cross Platform Picker not binding correctlyXamarin 跨平台选择器未正确绑定
【发布时间】:2019-02-17 12:16:54
【问题描述】:

我是 Xamarin 跨平台应用程序的新手

我正在尝试将 Picker ItemSource 绑定到 List 并显示一个属性,但没有成功!我的参考是from here

请有人建议我的错误在哪里,请我的 View 或 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>

【问题讨论】:

    标签: c# xaml xamarin


    【解决方案1】:

    您为 itemsSource 提供的绑定方式不正确

      ItemsSource={Binding GradeList}
    

    同时停止使用Generic.List 进行绑定,带有Xamarin Forms 的MVVM 应该具有ObservableCollections,因为它继承自INotifyPropertyChangedINotifyCollectionChanged

    【讨论】:

    • 谢谢你,我错过了,关于收藏的一个好点。我会在 wpf 中使用它。我正在关注文档示例。我稍后会测试并标记它
    • 不,我认为我的页面错误的基本语法错误。请参阅问题 {link](stackoverflow.com/questions/54739066/…)
    • 你想让我在链接里看到什么兄弟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多