如何更改TextBlock的IsEnabled属性时更改超链接的颜色?

时间:2017-08-30 12:47:45

标签: wpf xaml data-binding wpf-style

我是WPF的新手。我想在IsEnabled的{​​{1}}属性变为TextBlock时将超链接的前景色更改为其他颜色(比如灰色)。我应该添加false来满足我的要求吗?

我卡在这里:

Style

1 个答案:

答案 0 :(得分:2)

当超链接被禁用时,它默认将颜色更改为灰色(如果未覆盖默认的前景),因此您可以禁用TextBlock并完成

<TextBlock Margin="0,150,0,0"
           TextAlignment="Center" 
           Background="White"
           IsEnabled="{Binding ShowProgressRing}">

    <Hyperlink x:Name="HyperLink"                   
               TextDecorations="UnderLine"
               FontSize="12"
               FontWeight="SemiBold" 
               Command="{Binding Path=Command}" >
        <Run Text="{Binding Path=HyperLinkText}"/>
    </Hyperlink>
</TextBlock>

如果超链接应具有非默认的活动/禁用颜色,则可以使用触发器为超链接编写样式:

<Hyperlink x:Name="HyperLink" 
            TextDecorations="UnderLine"
            FontSize="12"
            FontWeight="SemiBold" 
            Command="{Binding Path=Command}" >

    <Run Text="{Binding Path=HyperLinkText}"/>

    <Hyperlink.Style>
        <Style TargetType="Hyperlink">
            <Setter Property="Foreground" Value="Blue"/>
            <Style.Triggers>
                <!--binding to the same view model property which sets IsEnabled-->
                <DataTrigger Binding="{Binding ShowProgressRing}" Value="False">
                    <Setter Property="Foreground" Value="Gray"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Hyperlink.Style>

</Hyperlink>