Я попытался установить код непосредственно в коде и связать его со свойством (и вызвать 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 - нет, и я могу проследить, как код извлекает правильное значение из свойства.
Я в тупике. Любая помощь приветствуется.
Джош