2017-08-30 81 views
1

我是WPF的新手。當TextBlockIsEnabled屬性變爲false時,我試圖將超鏈接的前景顏色更改爲其他顏色(如灰色)。我應該添加一個Style以達到我的要求嗎?如何更改TextBlock的IsEnabled屬性更改超鏈接的顏色?

我都卡在這裏:

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

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

將Foreground屬性綁定到IsEnabled屬性並使用轉換器來更改顏色。 –

+0

@VishalPrajapati謝謝。我認爲這會起作用 – ZigZig

回答

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>