我在自定义DLL程序集中有一个UserControl,其中我定义了两个静态BitmapImage资源,它们表示ItemsControl中的数据状态。根据某些条件,我想使用转换器将图像的Source属性设置为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");
}
}...but在XAML中,这是成功的,所以我知道资源键是有效的。
<Image Source="{StaticResource MyResourceKey}" />我不知道这是否有什么区别,但这是在DLL中,而不是在EXE中。尽管如此,我仍然认为所有的资源都被压缩到应用程序上,这取决于您从哪里执行。
发布于 2019-05-15 08:15:39
在这里找到完美的解决方案-- Accessing a resource via codebehind in WPF (比使用Application.Current更好)
@itsho 您可以简单地将
x:Class添加到其中: 然后在后面的代码中使用它: var res =新的Namespace.NewClassName();var col = res"myKey";
然后,应该应用一个小补丁:
@Stephen Ross 但是为了能够使用它的键找到资源,我必须在尝试访问
res.InitializeComponent()之前调用key,否则对象将不显示键,而对res["myKey"]的调用将返回null
https://stackoverflow.com/questions/15751918
复制相似问题