Xamarin Forms XAML中的OnPlatform绑定不起作用

6
    <cv:BindableComboBox ItemsSource="{Binding Themes}" SelectedValue="{Binding SelectedTheme}">
      <cv:BindableComboBox.Title>
        <OnPlatform x:TypeArguments="x:String"
            iOS="{Binding ThemePickerTitle}"
            Android="{Binding ThemePickerTitle}"/>
      </cv:BindableComboBox.Title>
    </cv:BindableComboBox>

我有一个选择器,想将其标题绑定到ThemePickerTitle属性上。 如果我将其写成内联属性,它可以正常工作。但是我不想在Windows上显示标题。因此,我使用OnPlatform为其在iOS和Droid上设置标题,但现在编译失败了。


1
我认为 typeArgument 应该不同,但我不知道它应该是什么。 - mister_giga
1个回答

12

您粘贴的 Xaml 假定 OnPlatform 对象是将字符串绑定到的目标,然后 OnPlatform 根据平台返回正确的字符串。

不幸的是,这并不起作用,因为 OnPlatform 不是可绑定对象,不能成为绑定的目标。

有意义的做法是使用以下 Xaml:

<cv:BindableComboBox ItemsSource="{Binding Themes}" SelectedValue="{Binding SelectedTheme}">
  <cv:BindableComboBox.Title>
    <OnPlatform x:TypeArguments="BindingBase"
        iOS="{Binding ThemePickerTitle}"
        Android="{Binding ThemePickerTitle}"/>
  </cv:BindableComboBox.Title>
</cv:BindableComboBox>

这意味着OnPlatform会根据平台返回正确的绑定(而不评估它)。截至今天(2017-01-24),在Xamarin.Forms中,这并不起作用,但是修补程序已准备就绪,并将在下一个版本中发布:https://github.com/xamarin/Xamarin.Forms/pull/709


非常感谢。 - mister_giga
这确实有效,但是Visual Studio显示了这个令人讨厌的错误:XLS0504 属性 'BackgroundColor' 不支持类型为 'OnPlatform`1 (BindingBase)' 的值。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接