iOS平台下DataTrigger无法修改Rectangle背景颜色问题
Xamarin.Forms中Rectangle的DataTrigger在iOS上无法修改BackgroundColor问题
我在XAML中定义了一个Rectangle,希望通过DataTrigger根据视图模型里的可空布尔值Cancelled(bool?)调整其背景色。初始代码如下:
<Rectangle Grid.Row="0" Grid.Column="0" BackgroundColor="#00FF00"> <Rectangle.Triggers> <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="True"> <Setter Property="BackgroundColor" Value="#FF0000" /> </DataTrigger> </Rectangle.Triggers> </Rectangle>
这段代码在Android上可正常运行,但在iOS上颜色始终为#00FF00。我已确认Cancelled的值确实被设置为true,且该绑定可用于其他控件控制可见性,例如:
<Label IsVisible="{Binding Cancelled}" Text="Canceled" />
我尝试了将触发器放在Style中的写法:
<Rectangle Grid.Row="0" Column="0"> <Rectangle.Style> <Style TargetType="Rectangle"> <Style.Triggers> <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="{x:Null}"> <Setter Property="BackgroundColor" Value="#0000FF" /> </DataTrigger> <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="False"> <Setter Property="BackgroundColor" Value="#00FF00" /> </DataTrigger> <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="True"> <Setter Property="BackgroundColor" Value="#FF0000" /> </DataTrigger> </Style.Triggers> </Style> </Rectangle.Style> </Rectangle>
但iOS上颜色仍始终为#00FF00。该问题仅影响BackgroundColor属性,比如修改HeightRequest的触发器可正常工作:
<Rectangle.Triggers> <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="True"> <Setter Property="HeightRequest" Value="500" /> </DataTrigger> </Rectangle.Triggers>
我尝试使用Background替代BackgroundColor,但问题依旧。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

