针对Xaml中的Picker.Items获取整数值

针对Xaml中的Picker.Items获取整数值,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,这是我在xaml中的代码 <Picker Title="Privacy" SelectedItem="{Binding PrivacyLevel}"> <Picker.Items> <x:String>Public</x:String> <x:String>Private</x:String> </Picker.Items> </Picker> 公开的 私有的 属

这是我在xaml中的代码

<Picker Title="Privacy" SelectedItem="{Binding PrivacyLevel}">
  <Picker.Items>
      <x:String>Public</x:String>
      <x:String>Private</x:String>
  </Picker.Items>
</Picker>

公开的
私有的

属性PrivacyLevel为整数类型。如果是公共的,我想存储1个,如果是私人的,我想存储2个。如何?

您可以使用类来表示您的项目,可能是
PrivacyLevel
类。您可以使用
列表
,而不是将选择器绑定到字符串列表。PrivacyLevel类同时包含要显示的文本和要持久化/存储/使用的值

public class PrivacyLevel
{
    public string Name { get; set; }
    public int Value { get; set; }
}
然后使用选项填充ViewModel

    public List<PrivacyLevel> Privacies { get; set; } = new List<PrivacyLevel>()
    {
        new PrivacyLevel(){Name = "Public",Value = 1},
        new PrivacyLevel(){Name = "Private",Value = 2}
    };

    private PrivacyLevel _privacy;
    public PrivacyLevel Privacy{
       get{
          return _privacy;
       }
       set{
          _privacy=value;
          OnPropertyChanged();
       }
    }
public List Privacies{get;set;}=new List()
{
新PrivacyLevel(){Name=“Public”,Value=1},
新PrivacyLevel(){Name=“Private”,Value=2}
};
私密性(privacy level)私密性;;
公共隐私权{
得到{
归还隐私;
}
设置{
_隐私=价值;
OnPropertyChanged();
}
}
最后

    <Picker Title="Privacy"
            ItemsSource="{Binding Privacies}"
            SelectedItem="{Binding Privacy}"
            ItemDisplayBinding="{Binding Name}"/>

请记住,现在您有了一个SelectedItem,它是一个对象,如果您想使用该值,您需要访问它的属性


有点困惑,在代码中我在哪里定义了文本“Public”和“Private”?在你的代码中什么是Privacies&Privacy?你可以用一个类来表示你的项目,也许是一个PrivacyLevel类。您可以使用
列表
,而不是将选择器绑定到字符串列表。PrivacyLevel类既包含要显示的文本,也包含要持久化/存储/使用的值。它工作正常,但我对实现通知更改有点困惑。因此,每次0时它都会得到。您需要实现
INotifyPropertyChanged
,以保持UI和BindingContext同步。你可以在这里复习