Poma
Poma

Reputation: 8474

Conditional style in WPF

I've made a style that makes TextBlock look like a link:

<Style x:Key="linkStyle" TargetType="TextBlock">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="TextDecorations" Value="Underline" />
        </Trigger>
    </Style.Triggers>
    <Setter Property="Cursor" Value="Hand" />
    <Setter Property="Foreground" Value="Blue" />
    <EventSetter Event="MouseLeftButtonDown" Handler="navigateLink" />
</Style>

How to apply it only when TextBlock.Text starts with http:// ?

Upvotes: 6

Views: 15976

Answers (1)

yo chauhan
yo chauhan

Reputation: 12295

try this

<Style x:Key="linkStyleConditional" TargetType="{x:Type TextBlock}">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
                <Condition Binding="{Binding Path=Text, Converter={StaticResource SomeConverter}}" Value="True"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="Foreground" Value="Orange" />
        </MultiDataTrigger>
    </Style.Triggers>
</Style>

In SomeConverter write the logic if text start with http//: then return true else return false. i hope this will help.

Upvotes: 15

Related Questions