Моя проблема в том, что у меня есть 2 элемента управления выбора.1 из этих элементов управления сборщиком привязан к списку a, а один из этих элементов управления сборщиком связан со списком b.Оба эти элемента управления отображают данные, которые мне нужны, с правильными привязками отображения, которые работают нормально.
Моя проблема в том, что когда я связываю свойство selectedItem, оно работает для списка a, но не для списка b.Я проверил, что код буквально похож на аналогичную копию друг друга.
Я использовал Syncfusion Combobox, но переключился на средство выбора, так как думал, что здесь есть проблема, но ее нет.Все, что происходит, полностью зависит от того, что я делаю.
Сценарий использования состоит в том, что я снимаю список типов платежей из моего API и заполняю средство выбора на основе этого.Это работает.
Источник данных для моего основного представления содержит идентификатор.Когда я изменяю запись, я запускаю метод с именем update, чтобы найти selectedItem.Я не доволен этим подходом, и мне было бы интересно посмотреть, что используют другие люди.
Метод обновления получает источники данных для сборщиков и находит то, что, как я ожидаю, будет выбранным элементом.Это также работает нормально, но не связывается.
[Serializable]
public class PaymentInformation :BaseModel
{
public int? ID { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int? PaymentTypeId { get; set; }
public string PaymentTo { get; set; }
public string Location { get; set; }
public string Notes { get; set; }
public PersonInformation PersonBudget { get; set; }
public decimal AmountPaid { get; set; }
public decimal AmountReceived { get; set; }
public double TotalHours { get; set; }
public void Update(ObservableCollection<ResourceInformation> resources , ObservableCollection<PaymentTypeInformation> paymentTypes)
{
if(PaymentTypeId != null) this.PaymentTypeInformation1 = paymentTypes?.FirstOrDefault((paymentType) => paymentType.ID == PaymentTypeId.Value);
this.Resource = resources?.FirstOrDefault((resource) => resource.ResourceId == PersonBudget?.ID);
}
private PaymentTypeInformation _paymentTypeInformation;
private PaymentTypeInformation PaymentTypeInformation1 { get { return _paymentTypeInformation; } set { _paymentTypeInformation = value; OnPropertyChanged(nameof(PaymentTypeInformation1)); } }
private ResourceInformation _resource;
public ResourceInformation Resource { get { return _resource; } set { _resource = value; OnPropertyChanged(nameof(Resource)); } }
}
Основной xaml:
<Label Grid.Row="8" Grid.Column="0" Text="Payment Type:" />
<Picker BackgroundColor="White" Grid.Row="8" Grid.Column="1" ItemsSource="{Binding PaymentTypesDataSource}" ItemDisplayBinding="{Binding Path=DisplayText}" IsEnabled="{Binding IsProcessing, Converter={StaticResource reverseBoolConvertor}}" SelectedItem="{Binding DataSource.PaymentTypeInformation1, Mode=TwoWay}" />
Ожидаемый результат состоит в том, что выпадающий список инициализируется с selectedItem, который он не делает(в одном сценарии использования - другой работает нормально).