Триггер не работает при значении corrent - PullRequest
0 голосов
/ 03 февраля 2012

Когда значение выше 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;
    }
}

1 Ответ

0 голосов
/ 03 февраля 2012

попробуйте, обратите внимание на использование 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> 
...