2017-07-19 44 views
-5

如果值爲xyz,我想檢查文本塊的文本值。我不希望任何操作,但如果文本值爲'#FF84312F'我想將此文本設置爲文本的前景色。 以下是我的代碼。 我怎樣才能做到這一點。請幫幫我。如何檢查文本塊XAML中的數據觸發中的文本值

<TextBlock Text="#FF84312F"> 
     <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Self}}" Value="*#"> 
         <Setter Property="Foreground" Value="Red"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
    </TextBlock> 

回答

1

試試這個:

<TextBlock Text="#FF84312F"> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Foreground" Value="{Binding Text,RelativeSource={RelativeSource Self}}" /> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

或者這樣:

<TextBlock Text="#FF84312F"> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Style.Triggers> 
       <Trigger Property="Text" Value="#FF84312F"> 
        <Setter Property="Foreground" Value="{Binding Text,RelativeSource={RelativeSource Self}}" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

這將設置ForegroundText屬性指定的值,無論是無條件或有條件(使用Trigger) 。

+0

謝謝你,但文本值不是恆定的也可以是變化的。可能是顏色代碼會有所不同。我想要如包含()類型的東西 –

+0

你在說什麼?包含? XAML中沒有這樣的事情。這與你原來的問題有什麼關係? – mm8

+0

你有任何其他解決方案可以幫助我完成嗎? –

0

根據您的評論

我想是。我必須檢查文本塊文本,如果文本塊文本 是顏色代碼,然後將該顏色代碼分配給前景。這就是它

這將改變你的TextblockForeground如果Binded文本價值ColorColor代碼別的default colorshown

<TextBlock Text="{Binding Text}" Foreground="{Binding Text, RelativeSource= 
{RelativeSource Self}}"/> 

<TextBlock Text="#0FFFFF" Foreground="{Binding Text, RelativeSource= 
{RelativeSource Self}}"/> 
1

注:

這個答案是基於的answer provided by mm8

的評論您可以使用轉換器將字符串轉換到SolidColorBrush

Converter類:

public class TextToSolidColorBrushConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var color = Brushes.Black; 
     try 
     { 
      var converted = new BrushConverter().ConvertFromString(value?.ToString()); 
      color = converted != null ? (SolidColorBrush) converted : Brushes.Black; 
     } 
     catch (Exception e) 
     { 
      // ignored 
     } 
     return color; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

XAML:

<Window.Resources> 
    <local:TextToSolidColorBrushConverter x:Key="TextToSolidColorBrushConverter"/> 
</Window.Resources> 

<TextBlock Text="Any text"> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Foreground" Value="{Binding Text,RelativeSource={RelativeSource Self}, Converter={StaticResource TextToSolidColorBrushConverter}}" /> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
相關問題