silverlight - 使用ValueConverter返回StaticResource

标签 silverlight data-binding ivalueconverter

我正在尝试为我的业务实体中的不同状态设置静态资源。我的想法是,我可以使用值转换器来获取业务实体并根据算法返回相应的背景笔刷。我希望这些资源是静态的,因此我可以在设计器中对其进行设计,然后手动切换它们以预览开发期间的外观,但可以以编程方式使用它们。

目的是要遵循以下思路:

    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资源部分中,您将这样声明它(当然使用您自己的资源):
<local:CustomColorConverter x:Key="BackgroundConverter" 
    HighBackground="{StaticResource HighlightBrush}" 
    LowBackground="{StaticResource NormalBrush}" />

这具有可重复使用的优点。您可以使用新键创建另一个实例并定义不同的画笔。

另外,这可以用于几乎所有东西,而不仅限于SolidColorBrushes。您也可以定义完整的样式或模板。

希望能有所帮助。

关于silverlight - 使用ValueConverter返回StaticResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11778009/

相关文章:

jquery - Silverlight 还是 jQuery?选择面向 future 的技术

asp.net - 使用声明性数据绑定(bind) ASP.NET 进行评估

wpf - 找到图片来自 Converter 的 userControl

wpf - MVVM IValueConverter Convert 方法在期望 float 时获取空字符串参数

c# - 实现 IValueConverter 将字符串转换为图像

c# - 缺少系统.Windows

Silverlight 无法在同一字典中找到资源

data-binding - AngularJS初学者数据绑定(bind)困惑

c# - MS 出版商自动化

c# - 绑定(bind)实际上是如何工作的?