我想通过布尔属性IsCurrentPage设置背景颜色。 我使用社区工具包BoolToObjectConverter,就像这样:
<ResourceDictionary>
<toolkit:BoolToObjectConverter x:Key="BoolToColorConverter" TrueObject="Colors.Red" FalseObject="Colors.Blue"/>
</ResourceDictionary>
在我的实现中,它看起来是这样的:
<syncfusion:SfChip Text="{Binding IsCurrentPage, Converter={StaticResource BoolToColorConverter}}"
BackgroundColor="{Binding IsCurrentPage, Converter={StaticResource BoolToColorConverter}}"
TextColor="Black"/>
按钮上的文字正确。 (例如“颜色.红色”) 但背景颜色始终为白色(默认)。 我也尝试了“红色”而不是“Colors.Red”。
为什么背景颜色设置不正确?
您正在传递
"Colors.Red"
和 "Colors.Blue"
,它们属于 string
类型,而不是本例中的 Color
对象。
为了传递
Colors.Red
和 Colors.Blue
对象,请尝试以下操作:
<ResourceDictionary>
<toolkit:BoolToObjectConverter
x:Key="BoolToColorConverter"
TrueObject="{x:Static Colors.Red}"
FalseObject="{x:Static Colors.Blue}"/>
</ResourceDictionary>
替代方案:
<ResourceDictionary>
<toolkit:BoolToObjectConverter x:Key="BoolToColorConverter">
<toolkit:BoolToObjectConverter.TrueObject>
<Color>Red</Color>
</toolkit:BoolToObjectConverter.TrueObject>
<toolkit:BoolToObjectConverter.FalseObject>
<Color>Blue</Color>
</toolkit:BoolToObjectConverter.FalseObject>
</toolkit:BoolToObjectConverter>
</ResourceDictionary>