wpf 库的图片不显示

When an image in a WPF library (DLL) does not display in the consuming application, the primary issues are incorrect Build Action settings and improper Pack URI syntax for accessing resources across assemblies.

Here are the steps to fix the problem:

  1. Verify Project SDK (for .NET Core/.NET 5+)

If you are using modern .NET (Core, 5, 6+), the library project's SDK must be set correctly to handle WPF resources.

  • In your library's .csproj file, ensure the Sdk attribute is set to Microsoft.NET.Sdk.WindowsDesktop.

xml

复制代码
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  1. Set the Image Build Action to 'Resource'

This is the most common fix. The image file must be compiled into the library's managed resources.

  • In Visual Studio, right-click the image file in the Solution Explorer.
  • Select Properties.
  • In the Properties window, change the Build Action from Content or Embedded Resource to Resource.
  • Ensure Copy to Output Directory is set to Do not copy (or left blank).
  1. Use the Correct Pack URI Syntax in the Consuming Application

When referencing an image from an external library, you must use a full Pack URI that specifies the assembly name.

The correct format in XAML is:
Source="pack://application:,,,/AssemblyName;component/FolderPath/ImageName.ext"

  • Replace AssemblyName with the actual name of your library project (e.g., MyControlsLibrary).
  • Replace FolderPath/ImageName.ext with the path to your image within the library project (e.g., Images/logo.png).

Example XAML:

xml

复制代码
<Image Source="pack://application:,,,/MyControlsLibrary;component/Resources/logo.png" />

A shorthand syntax is also common and typically works:

xml

复制代码
<Image Source="/MyControlsLibrary;component/Resources/logo.png" />
  1. Rebuild the Solution

After making changes, especially to the build actions or project file, perform a full Rebuild Solution (Build -> Rebuild Solution) to ensure the images are properly compiled into the resulting DLL.

  1. Check for Z-Index or Layout Issues

Sometimes the image loads correctly, but it is hidden behind another UI element in your layout.

  • Verify your layout containers (like Grid, StackPanel, Canvas) to ensure the Image control is visible and not obscured by an element with a higher Z-index or an opaque background.
相关推荐
KmSH8umpK18 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第三篇
redis·分布式·wpf
KmSH8umpK1 天前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案
redis·分布式·wpf
武藤一雄1 天前
WPF:MessageBox系统消息框
前端·microsoft·c#·.net·wpf
武藤一雄1 天前
WPF进阶:万字详解WPF如何性能优化
windows·性能优化·c#·.net·wpf·.netcore·鲁棒性
wangnaisheng1 天前
【WPF】路由事件详细使用
wpf
雨浓YN2 天前
GKMLT通讯工具箱(WPF MVVM) - 07-倍福ADS通讯
网络·wpf
雨浓YN2 天前
GKMLT通讯工具箱(WPF MVVM) - 04-三菱MC通讯
wpf
不会编程的懒洋洋2 天前
WPF XAML+布局+控件
xml·开发语言·c#·视觉检测·wpf·机器视觉·视图
雨浓YN2 天前
GKMLT通讯工具箱(WPF MVVM) - 06-OPCUA通讯
wpf
雨浓YN2 天前
GKMLT通讯工具箱(WPF MVVM) - 03-西门子S7通讯
wpf