Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 使用ValueConverter返回StaticResource_Silverlight_Data Binding_Ivalueconverter - Fatal编程技术网

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}" />