当用户控件处于引用的程序集中时,图像不会出现在按钮上

时间:2017-02-14 15:14:45

标签: wpf xaml

我有一个主WPF应用程序,它引用了我创建的WPF用户控件库。在库中,我有一个用户控件和一个图像文件夹(用户控件使用的图像)。以下是我在用户控件中使用的XAML的一部分:

<UserControl x:Class="Alstom.UserControls.MainToolbar"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:Alstom.UserControls"
         mc:Ignorable="d" 
         d:DesignHeight="120" d:DesignWidth="3440">
<UserControl.Resources>
    <Image x:Key="Subway" Source="/images/MainToolbar/Subway.png"/>
    <Image x:Key="Globe" Source="/images/MainToolbar/Globe.png"/>
    <Image x:Key="Gavel" Source="/images/MainToolbar/Gavel.png"/>
    <Image x:Key="Clipboard" Source="/images/MainToolbar/Clipboard.png"/>
    <Image x:Key="EllipsisVertical" Source="/images/MainToolbar/EllipsisVertical.png"/>
    <Image x:Key="Check" Source="/images/MainToolbar/Check.png"/>
    <Image x:Key="Bell" Source="/images/MainToolbar/Bell.png"/>

用户控件有我写的按钮,如下所示(注意我将Content属性定义为StaticResource:

<Button x:Name="button" Grid.Row="1" Grid.Column="0" Content="{StaticResource Subway}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="48" Height="48"/>

当我双击用户控件时,在设计器中,我会看到按钮上的图像。

但是我在我的解决方案中创建了一个主WPF应用程序,它引用了外部程序集,如下所示:

<Window x:Class="MainToolBar.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:myMainToolbar="clr-namespace:Alstom.UserControls;assembly=Alstom.UserControls"
    mc:Ignorable="d"
    Title="MainWindow" Height="auto" Width="3440" ScrollViewer.VerticalScrollBarVisibility="Visible">
<Grid>
    <myMainToolbar:MainToolbar HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>

当我双击MainWindow.xaml时,我没有看到设计器中按钮上的图像,也没有看到我运行它时的图像。

在运行时显示图像需要做什么?在用户控件项目中,图像具有Build Action = Resource。但我试图将其中一个更改为Embedded Resource,但仍然无效。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试将图片的构建操作设置为资源并使用包URI:

<Image x:Key="Subway" Source="pack://application:,,,/YourAssemblyName;component/images/MainToolbar/Subway.png"/>

不要忘记将“YourAssemblyName”更改为程序集/ WPF用户控件库项目的实际名称。

在WPF中打包URI: https://msdn.microsoft.com/en-us/library/aa970069(v=vs.110).aspx