SelectedIndex="{Binding SelectedOrder.ClientId}" it's wrong, remove it
Picker bind source to list and select values from another object

I want to bind my Picker
to clients list AllClients
, nevertheless i want value selected there to be refelecting other object: selectedOrder
which contains diffrent id
and value
than AllClients
lists properties. Let me show below the code to clarify things.
This is ViewModel related to my page:
public class OrdersViewModel : BaseViewModel, IOrderViewModel
{
public ObservableCollection<OrderReadModel> Orders { get; set; }
public ObservableCollection<IdValueReadModel> AllClients { get; set; }
private OrderReadModel _selectedOrder;
public OrderReadModel SelectedOrder
{
get => _selectedOrder;
set => SetValue(ref _selectedOrder, value);
}
public OrdersViewModel()
{
var clients = await _webApiService.GetBootleClientsIdValue(new CancellationToken());
var listkl = (List<IdValueReadModel>)clients ;
if (listkl != null)
foreach (var item in listkl)
AllClients.Add(item);
}
}
My _selectedOrder (OrderReadModel)
contains ClientId
and ClientName
which will be equivalent to one of the values from AllClients (Id, Value).
Therefore on on my page i want to fill picker with my clients using AllClients
and select current selection to the selection from _selectedOrder
. So somehow it has to know that ClientId
and ClientName
from _selectedOrder
is the same as Id
and Value
on AllClients
. How can i do that? I tried as follows so far but doesn't work.
<Picker Title="My client" ItemsSource="{Binding AllClients}" SelectedItem="{Binding SelectedOrder, Mode=TwoWay}" ItemDisplayBinding="{Binding SelectedOrder.ClientName}" SelectedIndex="{Binding SelectedOrder.ClientId}"/>
Hope you got my point.
You have to set SelectedItem to a Bindable Property
You mean if AllClients is type of IdValueReadModel (the list) so then SelectedItem HAS TO BE the same type and nothing else means it has to be type of IdValueReadModel? Am i right?
Yes they have to be of the same type
Sign in to comment