【问题标题】:Xamarin Forms Picker SelectedItem BindingXamarin 表单选取器 SelectedItem 绑定
【发布时间】:2017-01-19 18:22:26
【问题描述】:

Xamarin Forms 文档Xamarin.Forms.Picker.SelectedItemPicker 有一个公共属性SelectedItem。但是,当我尝试绑定它时出现错误。如果您必须手动处理 SelectedIndex 属性,则选择器不是很有用。

托尼

【问题讨论】:

  • 您使用的是哪个版本的 Xamarin.Forms?可绑定的选择器存在于2.3.4 only
  • 确保用于绑定SelectedItem的VM属性类型与ItemsSource集合中使用的类型相同。

标签: xamarin.forms


【解决方案1】:

无需手动处理SelectedIndex。您可以使用PickerSelectedItem 属性。只要确保你的类型是相同的。例如,如果您的 ItemsSource 绑定到一个属性:

BookTitles List<string> { get; set; }

你的SelectedItem 必须是这样的:

SelectedBookTitle string { get; set; }

确保将SelectedBookTitle 值设置为在页面首次显示时显示标题。 不要忘记在SelectedItem Binding 上将Mode 设置为TwoWay。 例如:

<Picker ItemsSource="{Binding BookTitles}" SelectedItem="{Binding 
SelectedBookTitle, Mode=TwoWay}" />

这将确保在页面首次显示时显示标题, 并在页面和代码隐藏/视图模型上保持SelectedBookTitle 的值相等。

在本例中无需使用行为。

【讨论】:

    【解决方案2】:

    您可以相对轻松地添加此功能,即使使用开箱即用的旧版 Forms pre 2.3.4 也是如此。只需创建一个自定义behaviour 来绑定选择器项目。您可以实现自己的版本或使用现有的库,例如 Xamarin 大学基础结构库,可用作 sourceNuget

    详细的documentation展示了如何使用它:

    <Picker ...>
       <Picker.Behaviors>
          <inf:PickerBindBehavior Items="{Binding Colors}" 
                              SelectedItem="{Binding FavoriteColor}" />
       </Picker.Behaviors>
    </Picker>
    

    行为的方法是公开一个可绑定的属性(项目)并使用一个可观察的集合。每当这种情况发生变化时,行为都会更新选择器的项目。

    【讨论】:

      猜你喜欢
      • 2018-11-15
      • 1970-01-01
      • 2021-11-08
      • 2018-02-01
      • 2015-11-05
      • 1970-01-01
      • 2021-04-18
      • 2017-08-17
      • 1970-01-01
      相关资源
      最近更新 更多