在自定义控件库的Generic.xaml文件中使用应用级资源。

12 浏览
0 Comments

在自定义控件库的Generic.xaml文件中使用应用级资源。

我在自定义控件上有一个按钮,并且我试图在按钮上显示一个作为资源在我的App.xaml文件中定义的图像,代码如下:

但是出于某种原因,我不能在Themes\Generic.xaml文件中的自定义控件模板中将其作为静态资源使用,运行时会导致应用程序崩溃并显示找不到请求的资源。以下是我用于绑定到资源的XAML代码:

如果我在Generic.xaml文件中以完全相同的方式定义资源,则在运行时可以正常工作,但是会给我一个预编译警告,因为现在它在Themes/Resources/中寻找资源,而不仅仅在/Resources/中寻找。所以在设计时我得到一个警告,但在运行时它可以正常工作。

那么为什么它在App.xaml中找不到我的资源呢?我在普通的WPF项目中以完全相同的方式做,一切都很顺利,但是在这个自定义控件库中,它给我带来了头疼。非常感谢任何帮助!

0
0 Comments

使用自定义控件库的Generic.xaml文件中的应用程序级资源的原因是为了在控件模板中使用这些资源。问题的解决方法是在Generic.xaml文件中定义BitmapImage,并使用Pack URI来访问文件。然后在控件模板中使用该资源。需要注意的是,使用较短的Pack URI版本仍然会导致程序在运行时崩溃,因此必须使用长版本来指定包含图像的程序集。虽然这个解决方法并没有在App.xaml中定义应用程序级资源,但它可以在设计时和运行时正常工作,因此被认为是最佳实践。

0
0 Comments

问题的原因是Generic.xaml文件无法访问自定义控件库的App.xaml文件中定义的资源。解决方法是将资源的访问方式从StaticResource更改为DynamicResource,并确保Image的BuildAction设置为Resource或EmbeddedResource。如果问题仍然存在,可以尝试将Image添加到应用程序中的其他屏幕中,看看是否能够显示出来。

0