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

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

tags: wpf c#


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

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

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

这个问题简单来说就是资源找不到,但是奇怪的是在自定义控件(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)