我正在尝试以Xamal形式绑定xaml中的Image源,但是我收到以下错误。
然而,我可以对图像源进行硬编码,但是我必须在很多地方进行硬编码,所以我更希望将它绑定到一个属性,如果更改可以在整个项目中反映出来。任何人都可以对我得到的错误有所了解吗?无法分配属性“iOS”:类型不匹配 “Xamarin.Forms.Binding”和“Xamarin.Forms.ImageSource”
我目前正在使用转换器类来检索源代码。下面是我当前生成错误的代码。此外,我不想转向基于代码的解决方案,而是希望看看是否可以在XAML中解决这个问题。
<Image
Aspect="AspectFill"
Grid.Row="0"
Grid.Column="3"
Grid.RowSpan="2"
VerticalOptions="Center"
HorizontalOptions="End">
<Image.Source>
<OnPlatform x:TypeArguments="ImageSource"
iOS="{Binding .,Converter={StaticResource getGestureIcon},ConverterParameter=Swipe}"
Android="{Binding .,Converter={StaticResource getGestureIcon},ConverterParameter=LongPress}" />
</Image.Source>
</Image>
谢谢
答案 0 :(得分:1)
您过度复杂并且使用OnPlatform没有Binding支持。在您的转换器中检查您所在的平台。
答案 1 :(得分:0)
@Rui Marinho:我从没想过这样。那可能有用。但是,我以不同的方式实现它,即定义静态属性并直接引用它。使用了来自How to bind class properties in XAML of xamarin forms
的解决方案以下是代码。
xmlns:Icon="clr-namespace:GetIcon"
<Image
Aspect="AspectFill"
Grid.Row="0"
Grid.Column="2"
Grid.RowSpan="2"
VerticalOptions="Center"
HorizontalOptions="End">
<Image.Source>
<OnPlatform
x:TypeArguments="ImageSource"
iOS="{x:Static Icon:GetIcon.SwipeLeft}"
Android="{x:Static Icon:GetIcon.LongTap}" />
</Image.Source>
</Image>