c# - Xamarin AutoSuggestBox 文本未从代码隐藏设置
问题描述
我尝试直接在代码中设置代码,并将其绑定到一个属性(并触发 PropertyChangedEventHandler)。但是前端没有更新。
我采用的方法似乎适用于某些本机控件(我为表单上的下一个控件调整了我的代码(一个将它的 ItemsSource 绑定到从我尝试绑定的相同值计算的属性的 Picker AutoSuggestBox 文本到。
我的 xml 看起来像这样。
<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 的绑定不是,我可以跟踪从属性中提取正确值的代码。
我难住了。任何帮助表示赞赏。
乔什
解决方案
如果其他人遇到它,我通过从 0.1.0 升级到 0.6.0 来修复它。我必须包含这个库的预发布版本,我不喜欢嵌入式设备,大部分时间都将超出移动/wifi 覆盖范围,但它似乎可以工作。
乔什
推荐阅读
- python - 如何在 Python 中替换字符串中的子字符串?
- python - 为什么等化矩阵元素不能正常工作
- java - 如何更正此 Callable 语句?
- java - 如何从将应用程序注册到 systemd 的 Java gradle 项目中获取 deb 包
- javascript - 如何在 p5.js 中正确地将对象添加到数组中?
- git - 将开发分支合并回gitflow中的主分支后,我应该删除它吗?
- android - Recycler View Firebase Kotlin
- amazon-web-services - 使用 IP 地址访问 Amazon S3 资源
- python - 如何转换为while循环
- streaming - 对多个流媒体和单个接收器使用 RTP 协议是否有意义?