【发布时间】:2012-02-26 02:04:14
【问题描述】:
当值为 Above24 时,触发器不起作用。我有一个文本框来测试转换器,它可以工作。但是这个标签的触发器不起作用。 转换器位于 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;
}
}
【问题讨论】:
-
请出示转换器的代码
-
这个触发器不会根据标签的 DataContext 有效地检查路径
Label.Content吗? -
你的代码格式真是一团糟。您应该考虑使用一种公认的方式来格式化您的源代码。
标签: .net wpf datatrigger