新的Bindable Picker无法从viewmodel设置默认项

时间:2017-09-08 13:16:08

标签: xamarin data-binding xamarin.forms

尝试使用Visual Studio 2017在Xamarin Forms版本2.3.4.270中使用新的可绑定选择器。

我可以在视图模型的列表中加载视图,因此当您单击选择器时,它会显示项目列表。我想在屏幕加载时在选择器中设置一个默认项目,我尝试过的任何工作都没有。

查看:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:BindablePickerTest"
             x:Class="BindablePickerTest.MainPage">
    <StackLayout>
        <Label Text="Welcome to Xamarin Forms!" 
           VerticalOptions="Center" 
           HorizontalOptions="Center" />
        <Picker Title="Test Picker" ItemsSource="{Binding Names}" SelectedItem="{Binding Name, Mode=TwoWay}" />
    </StackLayout>
</ContentPage>

查看代码背后:(为简单起见,视图模型位于代码背后)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace BindablePickerTest
{
    public partial class MainPage : ContentPage
    {
        MainPageViewModel vm;

        public MainPage()
        {
            InitializeComponent();
            this.BindingContext = vm = new MainPageViewModel();
        }

    }

    public class MainPageViewModel : INotifyPropertyChanged
    {

        List<string> names = new List<string>
        {
            "Doug",
            "Fred",
            "Steve",
            "Tom",
            "Victor"
        };
        public List<string> Names => names;
        public string Name = "Steve";

        public event PropertyChangedEventHandler PropertyChanged;
    }
}

当这个运行时,选择器仍然是空的 - &#34;史蒂夫&#34;未被选中。单击选择器时,列表显示正确,我可以选择任何名称,但不会设置默认选择。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

Name现在是一个字段。要使Binding起作用,需要将其转换为属性。

public string Name => "Steve";