Xamarin.forms ios上处于发布模式的Xamarin表单选择器不显示文本
我有一个Xamarin Forms应用程序,在这样定义的页面中有一个选择器:Xamarin.forms ios上处于发布模式的Xamarin表单选择器不显示文本,xamarin.forms,Xamarin.forms,我有一个Xamarin Forms应用程序,在这样定义的页面中有一个选择器: <Picker ItemsSource="{Binding AvailableCultures}" SelectedItem="{Binding SelectedCulture, Mode=TwoWay}" ItemDisplayBinding="{Bindin
<Picker ItemsSource="{Binding AvailableCultures}"
SelectedItem="{Binding SelectedCulture, Mode=TwoWay}"
ItemDisplayBinding="{Binding DisplayName}" />
viewmodel中的相关部分包括:
private CultureInfo selectedCulture = CultureHelper.CurrentCulture;
public CultureInfo SelectedCulture
{
get => selectedCulture;
set
{
if(value == null)
return;
if(selectedCulture == value)
return;
selectedCulture = value;
settingsFacade.DefaultCulture = selectedCulture.Name;
CultureHelper.CurrentCulture = selectedCulture;
RaisePropertyChanged();
}
}
public ObservableCollection<CultureInfo> AvailableCultures { get; }
private async Task LoadAvailableCulturesAsync()
{
await dialogService.ShowLoadingDialogAsync();
CultureInfo.GetCultures(CultureTypes.AllCultures).OrderBy(x => x.Name).ToList().ForEach(AvailableCultures.Add);
SelectedCulture = AvailableCultures.First(x => x.Name == settingsFacade.DefaultCulture);
await dialogService.HideLoadingDialogAsync();
}
private CultureInfo selectedCulture=culturehelp.CurrentCulture;
公共文化信息选择文化
{
get=>selectedCulture;
设置
{
如果(值==null)
返回;
如果(selectedCulture==值)
返回;
选择文化=价值;
settingsFacade.DefaultCulture=selectedCulture.Name;
CultureHelper.CurrentCulture=selectedCulture;
RaisePropertyChanged();
}
}
公共可见集合可用文化{get;}
专用异步任务LoadAvailableCultureAsync()
{
等待dialogService.ShowLoadingDialogAsync();
CultureInfo.GetCultures(CultureType.AllCultures).OrderBy(x=>x.Name).ToList().ForEach(AvailableCultures.Add);
SelectedCulture=AvailableCultures.First(x=>x.Name==settingsFacade.DefaultCulture);
等待dialogService.HideLoadingDialogAsync();
}
当我调试时,这在模拟器上工作没有问题。它在Android上也可以正常工作。但当我在iOS上部署应用程序时,文本是空的
我可以滚动浏览它们并选择新的,值也会更改。我想这可能是绑定的问题,但当我完全关闭链接时,它仍然存在。
是什么原因造成的
存储库链接:在调试和发布模式之间进行测试后,我们将看到
显示名
在发布模式下不显示,但英文名称
始终显示
调试模式:
释放模式:
因此有一个解决方案使其在发布模式下工作
使用绑定EnglishName
为ItemDisplayBinding修改Picker
的Xaml代码,如下所示:
<Picker x:Name="MyPicker"
ItemsSource="{Binding AvailableCultures}"
SelectedItem="{Binding SelectedCulture, Mode=TwoWay}"
ItemDisplayBinding="{Binding EnglishName}" />
Hi,您可以使用itemsplaybinding
检查在iOS设备上运行时是否有值。我已经在本地站点进行了测试,并在物理设备上运行,没有问题。您可以通过物理设备网络进行检查。@JuniorJiang MSFT谢谢您的回复。您是否在调试或发布配置中进行了本地测试?我在调试中进行了测试,它工作得很好。在我的帖子中,我可能没有足够清楚地指出这一点,但在调试中它对我也工作得很好。这个问题只会发生在我在发布版中构建之后。