Xamarin 表单选择器 - ItemDisplayBinding 不工作
Xamarin Form Picker - ItemDisplayBinding not working
Xamarin 表单选择器 - ItemDisplayBinding 不工作
我正在尝试用 ItemsSource 中的 属性 个对象填充我的选择器,基本上与此处记录的完全相同:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/picker/populating-itemssource#populating-a-picker-with-data-using-data-binding
这是我目前的情况:
Xaml
<ContentPage.BindingContext>
<local:Model />
</ContentPage.BindingContext>
<Picker Title="Select a Profession" ItemsSource="{Binding Professions}" ItemDisplayBinding="{Binding Name}" />
模型 - 绑定
public List<Profession> Professions { get; set; }
职业对象
public class Profession
{
public string Name { get; set; }
}
所以按照 Microsoft 的文档,Name 属性 应该显示,但在 Visual Studio 中没有显示(对于 Mac - 2019),它没有将 Name 识别为 属性,只是让我再次选择 Professions。
我做错了什么吗?
你必须把这个放在你的 page.cs
例如
在 MainPage.xaml.cs 之后 InitializeComponent();输入 ViewModel 的名称
BindingContext = new MonkeysPageViewModel();
根据您的代码片段,我认为您还没有使用 binding properly.I 已经在我这边测试了您的代码并且它有效喜欢 charm.Below 是供您参考的代码片段。
Xaml中的代码:
<Picker Title="Select a Profession" ItemsSource="{Binding Professions}" ItemDisplayBinding="{Binding Name}" />
.cs 中的代码:
public partial class MainPage : ContentPage
{
public ObservableCollection<Profession> Professions { get; set; } = new ObservableCollection<Profession>();
public MainPage()
{
InitializeComponent();
Professions.Add(new Profession { Name = "Teacher" });
Professions.Add(new Profession { Name = "Doctor" });
Professions.Add(new Profession { Name = "Astronaut" });
BindingContext = this;
}
}
public class Profession
{
public string Name { get; set; }
}
我通过将 List
更改为 ObservableCollection
来解决此问题。我试图用异步方法填充我的选择器,ObservableCollection
实现了 INotifyCollectionChangedInterface
参考:
ObservableCollection<> vs. List<>
Xamarin 表单选择器 - ItemDisplayBinding 不工作
我正在尝试用 ItemsSource 中的 属性 个对象填充我的选择器,基本上与此处记录的完全相同:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/picker/populating-itemssource#populating-a-picker-with-data-using-data-binding
这是我目前的情况:
Xaml
<ContentPage.BindingContext>
<local:Model />
</ContentPage.BindingContext>
<Picker Title="Select a Profession" ItemsSource="{Binding Professions}" ItemDisplayBinding="{Binding Name}" />
模型 - 绑定
public List<Profession> Professions { get; set; }
职业对象
public class Profession
{
public string Name { get; set; }
}
所以按照 Microsoft 的文档,Name 属性 应该显示,但在 Visual Studio 中没有显示(对于 Mac - 2019),它没有将 Name 识别为 属性,只是让我再次选择 Professions。
我做错了什么吗?
你必须把这个放在你的 page.cs
例如
在 MainPage.xaml.cs 之后 InitializeComponent();输入 ViewModel 的名称
BindingContext = new MonkeysPageViewModel();
根据您的代码片段,我认为您还没有使用 binding properly.I 已经在我这边测试了您的代码并且它有效喜欢 charm.Below 是供您参考的代码片段。
Xaml中的代码:
<Picker Title="Select a Profession" ItemsSource="{Binding Professions}" ItemDisplayBinding="{Binding Name}" />
.cs 中的代码:
public partial class MainPage : ContentPage
{
public ObservableCollection<Profession> Professions { get; set; } = new ObservableCollection<Profession>();
public MainPage()
{
InitializeComponent();
Professions.Add(new Profession { Name = "Teacher" });
Professions.Add(new Profession { Name = "Doctor" });
Professions.Add(new Profession { Name = "Astronaut" });
BindingContext = this;
}
}
public class Profession
{
public string Name { get; set; }
}
我通过将 List
更改为 ObservableCollection
来解决此问题。我试图用异步方法填充我的选择器,ObservableCollection
实现了 INotifyCollectionChangedInterface
参考: ObservableCollection<> vs. List<>