从视图模型中拾取项目源绑定

sah*_*thi 3 xamarin xamarin.forms

我试图从视图模型中的模型绑定选择器的值,在那里我得到模型的路径而不是值.

<Picker x:Name="LocationPicker"
    Title="Location" HeightRequest="40"
    HorizontalOptions="FillAndExpand"
    VerticalOptions="FillAndExpand"
    SelectedItem="{Binding Location}"
    ItemsSource="{Binding MaintainRoomTypes}"/>
Run Code Online (Sandbox Code Playgroud)

这是我的视图模型代码:

if (jobDetailsForFitter != null)
{
    WindowDetails = new WindowDetailsModel
    {
        Windows = jobDetailsForFitter.Windows,
        Locations = jobDetailsForFitter.Locations,
        RoomTypes = jobDetailsForFitter.RoomTypes,
        AddFiles = jobDetailsForFitter.AddFiles
    };

    Locations = jobDetailsForFitter.Locations;

    MaintainRoomTypes = jobDetailsForFitter.RoomTypes;

    await FitterService.Instance.LoadJobDetailsToLocalStore(jobDetailsForFitter, SelectedJob?.Id ?? 0);
}
Run Code Online (Sandbox Code Playgroud)

如何绑定itemsource以获取列表.

public List<Room> Locations { get; set; }
public List<RoomTypeModel> RoomTypes { get; set; }
Run Code Online (Sandbox Code Playgroud)

San*_*rya 6

你必须定义ItemDisplayBinding属性Picker.

例如:

public class Room
{
public string RoomNumber { private set; get; }
public string RoomName { private set; get; }
}
Run Code Online (Sandbox Code Playgroud)

并且您想在Picker中显示RoomName

<Picker ItemsSource="{Binding Room}" ItemDisplayBinding="{Binding RoomName}"/>
Run Code Online (Sandbox Code Playgroud)

希望这能解决你的问题.

  • <Picker ItemsSource ="{Binding Room}"ItemDisplayBinding ="{Binding RoomName}"SelectedItem ="{Binding RoomSelected,Mode = TwoWay}"/>并在ViewModel中定义RoomSelected,如此公共房间RoomSelected {get {return _RoomSelected; } set {_RoomSelected = value; OnPropertyChanged(); }} (3认同)