gpt4 book ai didi

silverlight - Silverlight 中的样式触发器

转载 作者:行者123 更新时间:2023-12-04 16:56:48 29 4
gpt4 key购买 nike

我正在尝试在 silverlight 中使用样式触发器,如下所示:

   <Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round">
<Path.Style>
<Style TargetType="{x:Type Path}">
<Setter Property="Fill" Value="DarkGray"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=userControl, Path=PumpRunning}" Value="True">
<Setter Property="Fill" Value="DarkGreen"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>

我想这样做,以便在泵是否运行时路径的填充值会发生变化。问题是silverlight 不支持样式触发器!

那么有没有围绕这个?有没有办法在代码中做到这一点?我已经调查过了,但我很困惑。

谢谢

伊恩

最佳答案

自定义值转换器将实现类似的目标。

 public class BoolToBrushConverter : IValueConverter
{
public Brush FalseBrush { get; set; }
public Brush TrueBrush { get; set; }

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return FalseBrush;
else
return (bool)value ? TrueBrush : FalseBrush;
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException("This converter only works for one way binding");
}
}

使用此转换器,您可以将 XAML 调整为:-
 <Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round">
<Path.Fill>
<Binding Path="PumpRunning" ElementName="userControl">
<Binding.Converter>
<local:BoolToBrushConverter
FalseBrush="DarkGray" TrueBrush="DarkGreen" />
</Binding.Converter>
</Binding>
</Path.Fill>
</Path>

请注意,由于您的颜色选择在路径定义中是本地的,因此我已将转换器的实例直接嵌入到路径定义中,从而实现相同的语义。但是,如果您需要使用相同的颜色对进行大量此类转换,您可以轻松地将 Converter 实例放置在页面资源中并使用普通的速记绑定(bind)语法。

关于silverlight - Silverlight 中的样式触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781796/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com