Xamarin AutoSuggestBox Текст не задан из кода - PullRequest
0 голосов
/ 08 февраля 2019

Я попытался установить код непосредственно в коде и связать его со свойством (и вызвать PropertyChangedEventHandler).Но интерфейс не обновляется.

Подход, который я выбрал, похоже, работает для некоторых собственных элементов управления (я адаптировал свой код для следующего элемента управления в форме (средство выбора, которое связывает свой ItemsSource со свойством, вычисленным из того же значения, что и яя пытаюсь привязать текст AutoSuggestBox к.

мой xaml выглядит следующим образом.

 <forms:AutoSuggestBox x:Name="locationAutoSuggestBox" 
 PlaceholderText="Enter site"
 TextChanged="LocationAutoSuggestBox_TextChanged"
 QuerySubmitted="LocationAutoSuggestBox_QuerySubmitted"
 SuggestionChosen="LocationAutoSuggestBox_SuggestionChosen"
 Text="{x:Binding SelectedSiteStr, Mode=TwoWay}" />

<Picker x:Name="pickerShift" HorizontalOptions="FillAndExpand" 
Title="Select shift" ItemsSource="{x:Binding ShiftsForLocation}">
</Picker>

Соответствующий раздел моего кода модели представления выглядит следующим образом.

    private Sites selectedSite;
    public Sites SelectedSite
    {
        get
        {
            return selectedSite;
        }
        set
        {
            selectedSite = value;
            if(selectedSite != null)
            {
                selectedSiteStr = selectedSite.SiteName;
                OnPropertyChanged("SelectedSiteStr"); 
                OnPropertyChanged("ShiftsForLocation");
            }
        }
    }

    private string selectedSiteStr = string.Empty;
    public string SelectedSiteStr
    {
        get
        {
            return selectedSiteStr;
        }
        set
        {
            if (value != null)
            {
                selectedSiteStr = value;
                if (AllSites != null)
                {
                    var site = AllSites.FirstOrDefault(x => x.SiteName.ToLower() == value.ToLower());
                    if (site != null)
                    {
                        selectedSite = site;
                    }
                }
            }
        }
    }        

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        var changed = PropertyChanged;
        if (changed != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

Привязка к ShiftsForLocation работает (она рассчитывается с использованием selectedSite, но привязка для SelectedSiteStr - нет, и я могу проследить, как код извлекает правильное значение из свойства.

Я в тупике. Любая помощь приветствуется.

Джош

1 Ответ

0 голосов
/ 11 февраля 2019

Если кто-то еще сталкивается с этим, я исправил это путем обновления с 0.1.0 до 0.6.0.Мне пришлось включить предварительную версию этой библиотеки, которая мне не интересна встраиваемым устройством, которое в большинстве случаев будет недоступно для мобильной связи / Wi-Fi, но, похоже, работает.

Джош

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...