我需要根据某些条件将画笔设置为红色或橙色,如果不满足任何条件,则回退到默认画笔。
如果 windows phone 有样式触发器,这将是微不足道的,但因为它没有,我必须为每个场景创建一个特殊用途的转换器,如下所示:
public class StatusToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var status = (Status)value;
if (status.IsCancelled)
{
return new SolidColorBrush(Colors.Red);
}
else if (status.IsDelayed)
{
return new SolidColorBrush(Colors.Orange);
}
else
{
return parameter;
}
}
}
并像这样使用它:
<TextBlock Foreground="{Binding Status,
Converter={StaticResource statusToColorConverter},
ConverterParameter={StaticResource PhoneForegroundBrush}}" />
但现在我需要一个根据条件返回PhoneForegroundBrush
或返回的转换器。PhoneDisabledBrush
我不能传递两个参数,而且 windows phone 也不支持 MultiBindings。我虽然这样:
<TextBlock Foreground="{Binding Status,
Converter={StaticResource statusToColorConverter},
ConverterParameter={Binding RelativeSource={RelativeSource Self}}
所以我可以在参数中获取文本块,然后用它来查找资源,但它也不起作用。
有任何想法吗?