C# 在WPF中嵌入项目图标
这个问题让我抓狂,我真的不知道发生了什么-为什么它没有按我认为应该的那样工作 我有一个WPF C#项目。我在解决方案中添加了一个名为“ExtFiles”的目录。此目录包含ICO文件、PNG图像和TTF字体 这三个文件都将“构建操作”设置为“资源”,将“复制到输出目录”设置为“不复制” 我通过以下方式调用XAML中的这3个文件: 对于图标:C# 在WPF中嵌入项目图标,c#,wpf,C#,Wpf,这个问题让我抓狂,我真的不知道发生了什么-为什么它没有按我认为应该的那样工作 我有一个WPF C#项目。我在解决方案中添加了一个名为“ExtFiles”的目录。此目录包含ICO文件、PNG图像和TTF字体 这三个文件都将“构建操作”设置为“资源”,将“复制到输出目录”设置为“不复制” 我通过以下方式调用XAML中的这3个文件: 对于图标: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presenta
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" x:Class="Swiftech_Imperium.MainWindow"
Title="Imp" Height="435" Width="510" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" Icon="pack://application:,,,/ExtFiles/imp.ico"
我得到了这个错误(仅针对图标,如果我可以的话,图标=“..”会启动,但是图像和字体没有应用
'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception.' Line number '5' and line position '9'.
我将这3个文件添加为资源(资源,添加文件),并将它们的构建操作设置为“资源”
编辑:
好的……我向前移动了一点
我在参考资料中添加了两个DLL(是的,有两个!)。
将图像/图标/字体移动到单独的文件夹(可能不需要)
但我还是遇到了同样的错误(解析)
原来是我的XAML在调用第二个DLL(我最初忘记将其添加到资源中)
现在,将这两个DLL作为资源,如果我进入引用并将这两个DLL的副本本地设置为False,我会得到一个错误。我可以将第一个DLL(WPFToolkit.DLL)设置为False,但无法对system.windows.controls.datavisualization.toolkit.DLL执行以下操作:(
原因是因为XAML正在调用它:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" x:Class="Imperium.MainWindow"
Title="Imperium" Height="435" Width="510" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" Icon="pack://application:,,,/ExtFiles/Imp.ico" Closing="Window_Closing" MouseDown="Grid_MouseDown" WindowStyle="None" BorderThickness="1" BorderBrush="Black" Foreground="Black">
我能做什么?您的包装瓮中的图标错误。它应该是: pack://application:,,/(限定程序集名称,即My.Project.Executable);组件/ExtFiles/imp.ico 将文件添加到VS project文件夹时,应将其设置为
资源和不复制
这同样适用于图像和字体-tho'我还想说,我没有使用像这样的直接引用加载字体,我不确定它是否能像这样工作。试试这个:
使用资源将是实现相同任务的不同方法。我想为您提供一个链接来阅读某些msdn文章
谢谢,但不起作用。您是否也尝试了EmbeddedResource
操作?是否有任何发布设置可供您尝试切换?只是一点提示而已。请注意,这是不鼓励的,因此答案应该是搜索解决方案的终点(而不是另一个参考的中途停留,随着时间的推移,它往往会过时)请考虑在这里添加一个独立的概要,将链接作为参考。
Icon="/Resources/Imp.ico"
Source="/Resources/Logo.png"
FontFamily="/Resources/#DS-Digital"
'System.Windows.Baml2006.TypeConverterMarkupExtension' threw an exception.' Line number '5' and line position '9'.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" x:Class="Imperium.MainWindow"
Title="Imperium" Height="435" Width="510" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" Icon="pack://application:,,,/ExtFiles/Imp.ico" Closing="Window_Closing" MouseDown="Grid_MouseDown" WindowStyle="None" BorderThickness="1" BorderBrush="Black" Foreground="Black">