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