日期:2014-05-17  浏览次数:21361 次

WPF,自定义控件dll如何使用资源文件
创建了一个自定义控件的dll库,控件是继承自Button的MyButton,它只是添加了一张背景图片:


<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyButton">
<Style TargetType="{x:Type local:MyButton}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MyButton}">
                <Border>
                    <Border.Background>
                        <ImageBrush ImageSource="1.jpg" />
                    </Border.Background>
                    <ContentPresenter/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
</ResourceDictionary>


生成dll之后,在另一个应用程序中添加此dll文件,并添加命名空间引用。但是,当在项目中添加一个自定义控件时,却报错:找不到资源“1.jpg”

我想问的是,当在dll中使用了资源文件时,该怎么办呢?是不是这个资源文件也要随着添加到应用程序中呢?如果是的话,使用dll之前,谁知道需要些什么资源文件啊,况且,资源文件添加到应用程序中的哪个路径下呢,也都是个未知数。
dll中使用了资源文件时,是怎么操作的呢?

------解决方案--------------------
1.jpg要的生成操作要设置成Resrouce
------解决方案--------------------
这样才能随同你的自定义控件一起编译到这个项目的dll中
------解决方案--------------------
<ImageBrush ImageSource="1.jpg" />
这个uri的问题吧 试试这个 pack://application:,,,/Themes/1.jpg
<ImageBrush ImageSource="pack://application:,,,/Themes/1.jpg" />
------解决方案--------------------
如果还不好使再试试这样
pack://application:,,,/你的dll名称;component/文件夹/1.jpg
------解决方案--------------------
引用:
路径应该没问题的吧,这是在属性窗口设置,自动生成的

楼主试试无妨 这个 报错:找不到资源“1.jpg”
症状比较明显是你的uri的问题啊
试试看吧