gpt4 book ai didi

c# - 从值转换器访问资源字典中的颜色

转载 作者:可可西里 更新时间:2023-11-01 02:59:12 26 4
gpt4 key购买 nike

我在 ResourceDictionary 中定义了几种颜色。例如:

<ResourceDictionary ...>
<Color x:Key=Gray1>#FFF7F1F3</Color>
<Color x:Key=Gray2>#FFDDD8DA</Color>
</ResourceDictionary>

所以我可以在应用程序的任何地方重用它们。

现在我写了一个值转换器来将项目的内部状态转换为相关的颜色。

如何访问值转换器代码中定义的颜色?

我的第一个想法是将字典作为转换器参数传递。但我不知道如何实现这一目标。



问候

编辑

Application.Current.Resources 不是一个选项。因为我以后将无法访问它。

最佳答案

使用转换器参数的烦人之处在于,每次要使用绑定(bind)时都必须添加该文本。

相反,您可以将 ResourceDictionary 设为转换器的一个属性,并在实例化转换器时设置它。

转换器代码:

public class SomeConverter : IValueConverter
{
private ResourceDictionary _resourceDictionary;
public ResourceDictionary ResourceDictionary
{
get { return _resourceDictionary; }
set
{
_resourceDictionary = value;
}
}

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//do your own thing using the _dict
//var person = value as Person
//if (person.Status == "Awesome")
// return _resourceDictionary["AwesomeBrush"]
//else
// return _resourceDictionary["NotAwesomeBrush"];
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}

}

实例化并使用转换器:

<Window.Resources>
<local:SomeConverter x:Key="MyConverter" >
<local:SomeConverter.ResourceDictionary>
<ResourceDictionary Source="SomeRandomResourceDictionary.xaml" />
</local:SomeConverter.ResourceDictionary>
</local:SomeConverter>
</Window.Resources>

...

<StackPanel Background="{Binding CurrentPerson, Converter={StaticResource MyConverter}}" >
</StackPanel>

关于c# - 从值转换器访问资源字典中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238590/

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