Xamarin UWP:Picker在选择string.empty时显示类名

Xamarin UWP:Picker在选择string.empty时显示类名,xamarin,xamarin.forms,xamarin.uwp,Xamarin,Xamarin.forms,Xamarin.uwp,我在Xamarin表单项目中有以下代码 <StackLayout Orientation="Horizontal"> <Picker x:Name="picker" Title="Select a monkey" TitleColor="Red"> <Picker.ItemsSource> <x:Array Ty

我在Xamarin表单项目中有以下代码

    <StackLayout Orientation="Horizontal">
        <Picker x:Name="picker"
                Title="Select a monkey"
                TitleColor="Red">
            <Picker.ItemsSource>
                <x:Array Type="{x:Type x:String}">
                    <x:String> </x:String>
                    <x:String>Baboon</x:String>
                    <x:String>Capuchin Monkey</x:String>
                    <x:String>Blue Monkey</x:String>
                    <x:String>Squirrel Monkey</x:String>
                    <x:String>Golden Lion Tamarin</x:String>
                    <x:String>Howler Monkey</x:String>
                    <x:String>Japanese Macaque</x:String>
                </x:Array>
            </Picker.ItemsSource>
        </Picker>
    </StackLayout>

狒狒
卷尾猴
蓝猴
松鼠猴
金狮狨
吼猴
日本猕猴
如果您注意到选择器中的第一个选项是空字符串。当我在Android上运行时,我会显示正确的值。但当我在windows平台上运行并选择第一个选项时,类名显示在选择器字段中

该字段显示:
Xamarin.Forms.Picker


我希望将其显示为空字符串而不是类名。

原因:在本机UWP平台中,我们需要在xaml中设置
xml:space=“preserve”
,以保留字符串的空间。但是,我们在Xamarin中还不支持(尚未)
xml:space
。因此,当您将该值设置为空时,它将被标识为
null


解决方案:您可以在代码隐藏中设置picker的ItemsSource作为解决方法。

原因:在本机UWP平台中,我们需要在xaml中设置
xml:space=“preserve”
,以保留字符串的空间。但是,我们在Xamarin中还不支持(尚未)
xml:space
。因此,当您将该值设置为空时,它将被标识为
null


解决方案:您可以在代码隐藏中设置picker的ItemsSource作为解决方法。

我建议在代码隐藏中使用ObservableCollection或ViewMolde(如果使用MVVM)作为列表的源,然后在页面打开时以编程方式将第一个元素设置为选中,如下所示:
picker.SelectedItem=list.FirstOrDefault()嘿@MateusW,我的问题不是列表数据中的选择。上面的代码只是一个例子来说明我的问题。问题在于windows平台中显示的空数据的显示。它给出类名而不是显示空字符串。我从未在UWP上调试过,但这对我来说是一种奇怪的行为。如果使用1个空格而不是空字符串(“”),它仍然显示类?@MateusW。是的,对于任何数量的空白都是相同的行为。空字符串也是偶数。奇数。不幸的是,关于UWP的文档或错误报告并不多。我猜您必须重写本机选择器类中的某些内容。尝试创建扩展选择器的类,并确保在选择空字符串时不显示任何内容。如果这不起作用,我会开始寻找替代方案(可能是自动完成输入)。我建议在代码隐藏中使用ObservableCollection或ViewMolde(如果使用MVVM)作为列表的源代码,然后在页面打开时以编程方式将第一个元素设置为选中,如下所示:
picker.SelectedItem=list.FirstOrDefault()嘿@MateusW,我的问题不是列表数据中的选择。上面的代码只是一个例子来说明我的问题。问题在于windows平台中显示的空数据的显示。它给出类名而不是显示空字符串。我从未在UWP上调试过,但这对我来说是一种奇怪的行为。如果使用1个空格而不是空字符串(“”),它仍然显示类?@MateusW。是的,对于任何数量的空白都是相同的行为。空字符串也是偶数。奇数。不幸的是,关于UWP的文档或错误报告并不多。我猜您必须重写本机选择器类中的某些内容。尝试创建扩展选择器的类,并确保在选择空字符串时不显示任何内容。如果这不起作用,我会开始寻找替代方案(可能是自动完成输入)。