2012-02-03 169 views
-2

當數值超過24時,觸發器無法工作。我有一個文本框來測試轉換器,它的工作原理。但是這個標籤的觸發器不起作用。 轉換器是XAML代碼如下觸發器無法正常工作

<Label x:Name="label" Content="{Binding Text, ElementName=textBox2}"HorizontalAlignment="Left" Margin="69,110,0,0" Width="122.63" VerticalAlignment="Top"Background="White"FontSize="26.667"> 

  <Style TargetType="Label"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Label.Content, Converter={StaticResource dc}}" Value="Above24"> 
         <Setter Property="Foreground"> 
          <Setter.Value> 
           <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
            <GradientStop Color="Black" Offset="1"/> 
            <GradientStop Color="#FFCE0A0A"/> 
            <GradientStop Color="#FF2A0202" Offset="0.75"/> 
            <GradientStop Color="#FF5B0404" Offset="0.5"/> 
            <GradientStop Color="#FF9C0707" Offset="0.25"/> 
           </LinearGradientBrush> 
          </Setter.Value> 
         </Setter> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Label.Style> 
    </Label> 
class 
DataConverter 
: 
IValueConverter 
{ 
     object IValueConverter.Convert 
(object value, 
Type targetType, 
object parameter, 
System.Globalization.CultureInfo culture) 
{ 
      if (value == null) return false; 
      if (string.IsNullOrEmpty(value.ToString())) return false; 
      if (Convert.ToInt32(value) < 18) return "Below18"; 
      if (Convert.ToInt32(value) > 24) return "Above24"; 
      return Convert.ToInt32(value) < 100; 
     } 
    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return null; 
    } 
} 
+0

請出示轉換器 – 2012-02-03 12:52:33

+0

的代碼不會觸發這個有效檢查路徑'對標籤的DataContext的Label.Content'? – 2012-02-03 12:53:25

+1

你的代碼格式是一個真正的混亂。您應該考慮使用其中一種可接受的方式來格式化源代碼。 – 2012-02-03 12:59:26

回答

0

試試,注意使用的RelativeSource的。

<Style TargetType="Label"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Content, RelativeSource={RelativeSource Self},Converter={StaticResource dc}}" Value="Above24"> 
        <Setter Property="Foreground"> 
         <Setter.Value> 
          <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
           <GradientStop Color="Black" Offset="1"/> 
           <GradientStop Color="#FFCE0A0A"/> 
           <GradientStop Color="#FF2A0202" Offset="0.75"/> 
           <GradientStop Color="#FF5B0404" Offset="0.5"/> 
           <GradientStop Color="#FF9C0707" Offset="0.25"/> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Label.Style> 
</Label> 
+0

它現在工作.thx。我看到你綁定了內容。我用來綁定Label.Content,但它不起作用。爲什麼? – Chaos 2012-02-03 13:03:37

+0

@Chaos在使用標準綁定綁定到對象屬性,因此只需使用屬性名稱,在其他地方,您可能會使用綁定到依賴項屬性的元素,在這種情況下,您可以表示對象限定符以指示定義了DP的位置。 – 2012-02-03 13:08:50