xamarin 形成 xaml OnPlatform 无法处理绑定
Posted
技术标签:
【中文标题】xamarin 形成 xaml OnPlatform 无法处理绑定【英文标题】:xamarin forms xaml OnPlatform not working on bindings 【发布时间】:2017-06-05 06:10:09 【问题描述】: <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 上运行,但现在它可以编译了。
【问题讨论】:
我觉得typeArgument应该不一样,但是不知道应该是什么 【参考方案1】:您粘贴的 Xaml 假设 OnPlatform
对象是 Binding to string 的目标,然后 OnPlatform 根据平台返回正确的 string
。
很遗憾,这不起作用,因为 OnPlatform
不是 BindableObject
并且不能成为 Binding
的目标。
有意义的是,使用这个 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 年 1 月 24 日),这在 Xamarin.Forms 中不起作用,但要修复的补丁已经准备好并将在下一个版本中登陆:https://github.com/xamarin/Xamarin.Forms/pull/709。
【讨论】:
非常感谢以上是关于xamarin 形成 xaml OnPlatform 无法处理绑定的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin 形成 MVVM Stacklayout 内容绑定