Silverlight 使用ValueConverter返回StaticResource
我正在尝试为我的业务实体中的不同状态设置静态资源。其思想是,我可以使用值转换器获取业务实体,并根据算法返回相应的背景笔刷。我希望资源是静态的,这样我就可以在设计器中设计它们,并手动切换它们,以预览在开发过程中的外观,但能够以编程方式使用它们 我们的目标是实现以下目标:Silverlight 使用ValueConverter返回StaticResource,silverlight,data-binding,ivalueconverter,Silverlight,Data Binding,Ivalueconverter,我正在尝试为我的业务实体中的不同状态设置静态资源。其思想是,我可以使用值转换器获取业务实体,并根据算法返回相应的背景笔刷。我希望资源是静态的,这样我就可以在设计器中设计它们,并手动切换它们,以预览在开发过程中的外观,但能够以编程方式使用它们 我们的目标是实现以下目标: public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var data = value as DummyData;
if (data == null)
return null;
//Find resources
if (data.VarianceAmount >= 0)
return StaticResources.HighBackground;
else
return StaticResources.LowBackground;
}
如果静态资源是在层次结构中的page/control/framework元素中声明的,那么如何从值转换器内部访问它?我已经将我的值转换器设置为DependencyObject,但我不确定如何从那里导航层次结构。诀窍是在创建转换器时将所需的资源值传递到转换器中 比如说,
public class CustomColorConverter : IValueConverter
{
public SolidColorBrush HighBackground { get; set; }
public SolidColorBrush LowBackground { get; set; }
// remaining implementation...
}
然后在Xaml参考资料部分中,您可以这样声明它(当然使用您自己的参考资料):
这具有可重用的优点。可以使用新键创建另一个实例,并定义不同的笔刷
此外,这可以适用于任何东西,而不仅仅是SolidColorBrush;您还可以定义完整的样式或模板
希望有帮助
<local:CustomColorConverter x:Key="BackgroundConverter"
HighBackground="{StaticResource HighlightBrush}"
LowBackground="{StaticResource NormalBrush}" />