【发布时间】:2019-02-12 22:56:49
【问题描述】:
在我的一个 Xamarin.Forms 应用程序中,我想根据 IsEnabled 属性更改 DatePicker 的文本颜色。
我尝试了两种已知方法:
1) 使用样式
在 App.xaml 中:
<Style x:Key="DatePickerStyle" TargetType="DatePicker">
<Style.Triggers>
<Trigger TargetType="DatePicker" Property="IsEnabled" Value="True">
<Setter Property="TextColor" Value="Blue" />
</Trigger>
<Trigger TargetType="DatePicker" Property="IsEnabled" Value="False">
<Setter Property="TextColor" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
在 View.xaml 中:
<DatePicker IsEnabled="{Binding IsEnabled}" Style="{StaticResource DatePickerStyle}" ... />
2) 在 XAML 中添加触发器
<ViewCell>
<DatePicker IsEnabled="{Binding IsEnabled}" ...>
<DatePicker.Triggers>
<Trigger TargetType="DatePicker" Property="IsEnabled" Value="True">
<Setter Property="TextColor" Value="Blue" />
</Trigger>
<Trigger TargetType="DatePicker" Property="IsEnabled" Value="False">
<Setter Property="TextColor" Value="Red" />
</Trigger>
</DatePicker.Triggers>
</DatePicker>
</ViewCell>
这两种方式都会导致“System.InvalidOperationException: bindable not an instance of AssociatedType”异常。
是否可以使用包含 IsEnabled 属性的触发器的应用样式更改选择器的文本颜色?行为会是更好的方法吗?
【问题讨论】:
-
我建议你试试Converter
-
@FabriBertani 做到了,它只适用于状态变化,例如IsEnabled 从 false 变为 true。
标签: xamarin.forms xamarin.forms-styles