欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

wpf中用户自定义控件UserControl中使用资源字典的问题

程序员文章站 2022-03-04 11:12:32
...

wpf中用户自定义控件UserControl中使用资源字典的问题

tags: wpf c#


今天自定义了一个控件,然后创建了一个资源字典来写Style,然后把编译好的dll文件加入另外一个工程,在另外一个工程中使用自定义控件,然后就出问题了,系统提示说那个Style找不到……然后在网上看到一个帖子,跟我一样的问题,但是帖子中好像没有人能给出解决问题的答案,自己研究了一会算是搞定了,遂记录一下。
别人提问的帖子里面的问题,由于出现的状况跟这个帖子中描述的完全一致,所以就直接把别人的问题copy过来:

  • 1:创建了一个自定义控件的dll类库,在此dll中,又还创建了资源字典,自定义的控件就使用了字典。
    我想问的是,这个资源字典的生成操作,需要修改成”Resource”吗?默认是Page,Resource的话,可以将资源文件嵌入到程序中,Page代表什么呢?
  • 2:一个自定义控件dll,在其它项目中使用的时候,为什么老是报这样的错误啊,几天了找不到原因:
    wpf中用户自定义控件UserControl中使用资源字典的问题

帖子链接:提问题的帖子链接

这个问题简单来说就是资源找不到,但是奇怪的是在自定义控件(UserControl)的工程中明明有这个资源,而且自定义控件的工程中编译良好,没有提示找不到资源,但是一旦把编译后的dll文件拿到其他工程用就找不到资源了……于是就查问题,发现系统自动生成了一个文件:“DesignTimeResources.xaml”,然后我的资源是在这个文件中被merge的:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:WpfControlDataProcess.Properties">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/WpfControlDataProcess;component/BorderTheme.xaml"/>
    </ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

发现这个文件名字古怪,什么叫DesignTime?我猜就是在设计的时候去引用,在正是发布的时候没有把这个资源编译进dll文件中。于是把资源的引用从这里删了,直接改到使用资源的XAML文件中进行引用,然后就好了!这样应该就是把资源也编译进dll文件了,再在其他工程中直接使用该自定义控件一切良好。

相关标签: wpf 控件 c#