Есть ли способ указать стиль текстового блока, который принимает данный цвет шрифта / кисти и уменьшает его насыщенность - PullRequest
0 голосов
/ 29 апреля 2019

Я бы хотел сохранить предопределенный стиль из темы, которая определяет цвет текстового блока, но изменить этот цвет, просто уменьшив его насыщенность.

Обычно, если исходный цвет был черным, новый цвет должен быть темно-серым.

Это должно быть сделано динамически, так как исходный цвет текста будет меняться и не будет фиксироваться на черном.

Моим лучшим предположением было использование стиля, который использует оригинал ForeGroundсвойство Textblock и запускает его через конвертер.

<Style x:Key="InlineDescriptionStyle" TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
        <Setter Property="FontSize" Value="10"/>
        <Setter Property="Foreground" Value="{TemplateBinding Foreground, Converter=SaturationReducer}"/>
</Style>

Однако это приводит к следующей ошибке:

Error MC3029: 'Foreground' member is not valid because it does not have a qualifying type name. (12, 39)

1 Ответ

1 голос
/ 02 мая 2019

Хорошо, после игры с шейдерами я нашел решение, которое настолько просто, что это почти печально:

Используя Opacity свойства TextBlock / FrameworkElement, я былвозможность получить желаемый эффект.

<Style x:Key="InlineDescriptionStyle" TargetType="{x:Type FrameworkElement}">
    <Setter Property="TextBlock.FontSize" Value="10"/>
    <Setter Property="Opacity" Value="0.5"/>
</Style>

Вот изображение окончательного результата: enter image description here

...