Wpf 如何从ValueConverter访问资源?

Wpf 如何从ValueConverter访问资源?,wpf,resources,ivalueconverter,Wpf,Resources,Ivalueconverter,我在自定义DLL程序集中有一个UserControl,我在其中定义了两个静态BitmapImage资源,它们表示ItemsControl中的数据状态。我想使用转换器根据某些条件将图像的源属性设置为BitmapImage资源之一。但是,我不确定如何从Convert方法内部访问资源,因为我没有使用转换器的控件实例 我尝试过将资源加载到转换器的静态构造函数中的静态变量中,该构造函数也在同一个DLL中,但没有成功 这失败了 public class MyConverter : IValueConvert

我在自定义DLL程序集中有一个UserControl,我在其中定义了两个静态BitmapImage资源,它们表示ItemsControl中的数据状态。我想使用转换器根据某些条件将图像的源属性设置为BitmapImage资源之一。但是,我不确定如何从
Convert
方法内部访问资源,因为我没有使用转换器的控件实例

我尝试过将资源加载到转换器的静态构造函数中的静态变量中,该构造函数也在同一个DLL中,但没有成功

这失败了

public class MyConverter : IValueConverter
{
    static BitmapImage myFirstResource;
    static MyConverter()
    {
        // This can't seem to find the resource...
        myFirstResource = (BitmapImage)Application.Current.FindResource("MyResourceKey");
    }
}
…但是在XAML中,这是成功的,因此我知道资源密钥是有效的

<Image Source="{StaticResource MyResourceKey}" />


我不知道这是否有什么区别,但这是在DLL中,而不是在EXE中。尽管如此,我还是认为所有的资源都被压缩到了应用程序中,这取决于您执行的位置。

在这里找到了完美的解决方案 (比使用当前的
应用程序更好)

@

您只需将
x:Class
添加到其中:

<ResourceDictionary x:Class="Namespace.NewClassName"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <ds:MyCollection x:Key="myKey" x:Name="myName" />
</ResourceDictionary>
然后,应该应用一些修复:

@

但是为了能够使用它的键找到资源,我必须在尝试访问
键之前调用
res.InitializeComponent()
,否则对象将不显示键,对
res[“myKey”]
的调用将返回
null


你是说
myFirstResource=(BitmapImage)Application.Current.FindResource(“MyResourceKey”)?对不起。粘贴错误。修正。然后删除对任何人都没有用的问题。我为什么要这样做?这个问题仍然有效。我的代码示例在这里重新格式化时出现粘贴错误。很抱歉,我不同意你的说法。
var res = new Namespace.NewClassName();
var col = res["myKey"];