Я создал стиль для метки, который должен менять цвет переднего плана в зависимости от значения свойства «IsEnabled»:
<Style x:Key="ToggleLabelStyle" TargetType="{x:Type Label}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource DisabledToggleTextBrush}"/>
</Trigger>
</Style.Triggers>
(...)
</Style>
Один из моих элементов управления имеет метку с примененным этим стилем. Свойство «IsEnabled» метки привязано к свойству в View-Model элемента управления:
Просмотр XAML:
<Label x:Name="RememberCredentialsLabel" Style="{DynamicResource ToggleLabelStyle}" IsEnabled="{Binding SaveCredentials}" Content="Remember Credentials" Grid.Column="1" Margin="0,28.849,39.339,10.124" Grid.Row="3" HorizontalAlignment="Right" Width="130.5" Foreground="White"/>
View-Model Свойство:
public bool SaveCredentials
{
get
{
return _saveCredentials;
}
set
{
_saveCredentials = value;
RaisePropertyChanged(() => SaveCredentials);
}
}
Свойство правильно связано, и элемент управления получает предупреждение при изменении его значения. Проблема в том, что цвет переднего плана этикетки никогда не меняется. Я попытался жестко запрограммировать значение для переднего плана в стиле (например, красный), но оно все равно не изменилось.
В качестве последнего средства я попытался изменить статус видимости элемента управления на Скрытый вместо изменения значения переднего плана, и это сработало. Ярлык будет скрываться и отображаться соответствующим образом.
Почему я не могу изменить значение переднего плана из триггера в стиле?
Я использую Expression Blend 4, а также редактирую код вручную. Я также использую PRISM 4.