У меня есть стиль кнопки, в котором шаблон имеет ContentPresenter с именем «contentPresenter».Затем он имеет триггер, настроенный так:
<ControlTemplate.Triggers>
<Trigger Property="UIElement.IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="#FF838383" />
</Trigger>
</ControlTemplate.Triggers>
Этот триггер просто меняет цвет переднего плана кнопки на серый, когда кнопка отключена.Тем не менее, в моем приложении есть одна кнопка, в которой нет простого текста.Кнопка выглядит следующим образом:
<Button Grid.Column="3" Grid.Row="3" Grid.ColumnSpan="2"
Margin="120 20 30 10"
Command="{Binding SomeCommand}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding MyImage}" Margin="0 0 2 0"
Visibility="{Binding ShowMyImage, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<TextBlock Text="{Binding ButtonText}" />
</StackPanel>
</Button>
Передний план этой кнопки всегда один и тот же, независимо от того, заблокирована кнопка или нет.Я думаю, это потому, что текст для кнопки находится в текстовом блоке на панели стека в представителе контента, но я не знаю, как заставить изменения цвета переднего плана применить к внутреннему текстовому блоку.
Я попытался изменить свойство в триггере, чтобы использовать «TextBlock.Foreground» вместо «TextElement.Foreground».Я также попытался привязать передний план внутреннего текстового блока к цвету переднего плана ближайшего предка типа FrameworkElement следующим образом:
<TextBlock Text="{Binding ButtonText}" Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(FrameworkElement.Foreground)}" />
Ничего из этого не сработало.Что мне нужно сделать, чтобы цвет переднего плана применялся к TextBlock внутри StackPanel?