Выбранный элемент привязки элемента выбора в формах Xamarin - PullRequest
0 голосов
/ 05 июня 2018

У меня есть средство выбора, привязанное к объекту ObservableCollection.Элементы заполняются из веб-службы (данные JSON).

Средство выбора отображает данные правильно, но SelectedItem не работает.

Вот мой код xaml:

  <Picker
        ItemsSource="{Binding RatesTax}"
        ItemDisplayBinding="{Binding Code}"
        SelectedItem="{Binding SourceRate, Mode=TwoWay}">

    </Picker>

RatesTax является объектом класса RatesView

 public class RatesView 
{
    public string Code
    {
        get; set;
    }

    public double TaxRate
    {
        get; set;
    }      
}

и это свойство

 public ObservableCollection<RatesView> RatesTax { get; set; }

это атрибут sourceRate

private RatesView sourceRate;

и свойства SourceRate

   public RatesView SourceRate
    {
        set
        {
            if (sourceRate != value)
            {
                sourceRate = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SourceRate"));
            }
        }
        get
        {
            return sourceRate;
        }
    }

Iустановите точку останова в SourceRate, чтобы увидеть, входит ли она, когда я выбираю некоторые данные средства выбора, но не входит в процедуру SourceRate.Я думаю, что SelectedItem = "{Binding SourceRate} не работает должным образом.

спасибо за ваше время!

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

Это может быть ошибка на стороне Xamarin.Если вы сделаете свой SourceRate строкой, вы получите выбранный код при выборе.По какой-то причине он не маршрутизирует связанный объект, а только отображает значение.Это не кажется желаемым / предполагаемым поведением.

0 голосов
/ 05 июня 2018

Свойство SelectedItem должно быть того же типа, что и ваши элементы в коллекции.Итак, в вашем случае свойство SourceRate и его вспомогательное поле sourceRate должны иметь тип RatesView.

Также убедитесь, что ваша привязка двусторонняя, установив Mode=TwoWay в привязке:

<Picker
    ItemsSource="{Binding RatesTax}"
    ItemDisplayBinding="{Binding Code}"
    SelectedItem="{Binding SourceRate, Mode=TwoWay}">
</Picker>
...