在我的一个 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:可绑定不是 AssociatedType 的实例”异常。
是否可以使用包含 IsEnabled 属性的触发器的应用样式更改选择器的文本颜色?行为会是更好的方法吗?