Установите приоритет textBlock на основе дня недели в свойстве Text исключительно в XAML - PullRequest
0 голосов
/ 04 января 2019

У меня есть textBlock, который содержит дату в свойстве text. Теперь я хотел бы установить цвет переднего плана этого textBlock на основе дня недели в его текстовом свойстве.

Можно ли это сделать исключительно в XAML?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Теперь я хотел бы установить цвет переднего плана этого текстового блока на основе дня недели в его текстовом свойстве

Pure xaml:

<Style TargetType="{x:Type TextBlock}">
    <Style.Triggers>
        <Trigger Property="Text" Value="Monday"><!-- You will need to do this for every day of the week-->
            <Setter Property="Foreground" Value="Green"/>
        </Trigger>
    </Style.Triggers>
</Style>  

Также, если вы разбили дату, используя Runs, вы можете назначить стиль для прогона, например:

<TextBlock>
    <Run Text="{Binding Today}"/>
    <Run Text="{Binding Today.DayOfWeek, Mode=OneWay}"/><!-- This has to be one way as the Property DayOfWeek is readonly -->
</TextBlock>  

А затем в ресурсах использовать это:

<Style TargetType="{x:Type Run}">
    <Style.Triggers>
       <Trigger Property="Text" Value="Friday">
            <Setter Property="Foreground" Value="Green"/>
       </Trigger>
    </Style.Triggers>
</Style>
0 голосов
/ 04 января 2019

Не в чистом виде XAML, вам нужно создать класс, который реализует IValueConverter, затем, ссылаясь на него в вашем XAML, вы можете привязать цвет TextBlock к свойству даты, которое преобразуется в Brush через конвертер.

Для получения дополнительной информации о ValueConverter смотрите здесь:

https://www.codeproject.com/Tips/868163/%2FTips%2F868163%2FIValueConverter-Example-and-Usage-in-WPF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...