【问题标题】:Xamarin UWP : Picker displays class name when string.empty is selectedXamarin UWP:选择器在选择 string.empty 时显示类名
【发布时间】:2019-12-02 10:23:39
【问题描述】:

我在 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

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

【问题讨论】:

  • 我建议在后面的代码中使用 ObservableCollection 或 ViewMolde(如果使用 MVVM)作为 List 的源,然后以编程方式将第一个元素设置为在页面打开时选择,如下所示:@ 987654327@
  • 嘿@MateusW。 ,我的问题不在于从列表数据中进行选择。上面的代码只是显示我的问题的一个例子。问题在于在 Windows 平台中显示的空数据的显示。它给出了类名而不是显示空字符串。
  • 我从未在 UWP 上进行过调试,但这对我来说是一种奇怪的行为。如果您使用 1 个空格而不是空字符串 (" ") 它仍然显示类?
  • @MateusW。是的,对于任意数量的空格,这都是相同的行为。甚至对于空字符串也是如此。
  • 奇数。不幸的是,没有太多关于 UWP 的文档或错误报告。我想您将不得不覆盖本机 Picker 类中的某些内容。尝试创建一个扩展 Picker 的类,并确保在选择空字符串时不显示任何内容。如果这不起作用,我会开始寻找替代方案(可能是自动完成输入)。

标签: xamarin xamarin.forms xamarin.uwp


【解决方案1】:

原因: 在原生 UWP 平台中,我们需要在 xaml 中设置 xml:space="preserve" 以保留字符串的空间。但是,我们在 Xamarin 中不支持(尚)xml:space。所以当你将值设置为空时,它会被识别为null

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

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多