DataTrigger 不会更改 iOS 上的矩形背景颜色

问题描述 投票:0回答:1

我在 XAML 中定义了一个矩形,我想根据数据触发器调整其颜色。我从这样简单的事情开始。

 <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
在我的视图模型中是一个可为空的布尔值(bool?)。我已经验证该值确实设置为
true
。我可以使用其他视图上的
Cancelled
绑定来控制可见性等内容。例如,这按预期工作。

 <Label IsVisible="{Binding Cancelled}" Text="Canceled" />

我尝试使这项工作的最后一次迭代看起来像这样。

<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。这个问题似乎只影响背景颜色。例如,此触发器按预期工作。

<Rectangle.Triggers>
    <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="True">
        <Setter Property="HeightRequest" Value="500" />
    </DataTrigger>
</Rectangle.Triggers>

我尝试使用

Background
代替
BackgroundColor
但仍然不起作用。

xaml maui maui-ios
1个回答
0
投票

来自 矩形文档

要绘制矩形的内部,请将其 Fill 属性设置为 Brush 派生对象。

所以你可以使用

Fill
属性而不是
BackgroundColor
,

            <Rectangle.Triggers>
                <DataTrigger TargetType="Rectangle" Binding="{Binding Cancelled}" Value="True">
                    <Setter Property="Fill" Value="#FF0000" />
                </DataTrigger>
            </Rectangle.Triggers> 

如果您有任何疑问,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.