资源项目中的图像没有在嵌套控件中加载
本文关键字:嵌套 控件 加载 项目 图像 资源 | 更新日期: 2023-09-27 18:07:30
为了简洁,我删除了一些代码,但我的问题是,在包含的控件中,图像在运行时不会从资源项目加载。xaml与图像在不同的项目中,但两者都在相同的解决方案中,并且xaml项目将资源项目作为参考。
图像从Source="/ThinkVisual.Resources;component/Images/save.png"/
加载,但在<my:OwnerDetails x:Name="controlOwnerDetails" />
中有一个图像未加载。
<Button x:Name="btnAddOwnerDetails" ToolTip="Add Owner/Management details" Click="btnAddOwnerDetails_Click">
<Image Width="16" Height="16" Source="/ThinkVisual.Resources;component/Images/add_button.png" />
</Button>
父控件和子控件都在同一个项目和文件夹中。
<lc:LayoutGroup x:Name="layoutCompanyDetails" Header="Company Details" View="GroupBox" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Vertical" <lc:LayoutGroup x:Name="tabCompanyDetails" View="Tabs" SelectedTabChildChanged="tabCompanyDetails_SelectedTabChildChanged">
<lc:LayoutGroup Header="Details">
<my:CompanyDetails x:Name="controlCompanyDetails" />
</lc:LayoutGroup>
<lc:LayoutGroup Header="Owner/Management Details">
<my:OwnerDetails x:Name="controlOwnerDetails" />
</lc:LayoutGroup>
</lc:LayoutGroup>
<lc:LayoutItem>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="btnUpdate" ToolTip="Update company details" Padding="0" Margin="0" Width="65" MouseEnter="Button_MouseEnter" MouseLeave="Button_MouseLeave" IsEnabled="{Binding Path=AllPropertiesValid}" Click="btnUpdate_Click">
<Button.Content>
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Source="/ThinkVisual.Resources;component/Images/save.png"/>
<Label x:Name="lblSaveButton" Padding="2">Update</Label>
</StackPanel>
</Button.Content>
</Button>
</StackPanel>
</lc:LayoutItem>
这些图像在Visual Studio中是可见的,但在执行、项目构建和运行过程中不显示。
您使用了错误的包URI
确保您的自定义控制库中的图像设置为Resource
构建动作和False
复制到输出目录。
然后将Image.Source
更改为:
<Image Width="16"
Height="16"
Source="pack//application:,,,/ThinkVisual.Resources;component/Images/add_button.png" />
就我个人而言,我会将XAML中使用的所有图像放在与XAML相同的项目中,以打破依赖关系。想象一下,如果有人拿走了你的组件并想重新使用它。他们需要创建一个具有相同命名约定和文件名的新项目,以便按照其意图使用程序集。
如果图像在两个程序集(项目)中使用,请将图像添加到每个程序集并使用适当的Pack Uri。
如果你要在ThinkVisual.Administration
中定义的控件中使用图像那么就使用
Source="pack//application:,,,/ThinkVisual.Adminstration;component/Images/add_button.png"
,如果您在ThinkVisual.Resources
中使用的控件使用相同的图像,则使用Source
的第一个代码片段。