根据IsEnabled属性设置DatePicker文本颜色

时间:2018-09-07 14:53:24

标签: xamarin.forms xamarin.forms-styles

在我的一个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属性包含触发器的应用样式来更改选择器的文本颜色?行为会是更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我在DatePicker上遇到了类似的问题,在Xamarin论坛或msdn上找不到任何解释。我终于使用了以下变通办法,并且有效

// loop through all images
JStringToString(Data.getClipData.getItemAt(i).getUri.toString

另请参阅Visual State Manager