Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在我的类库项目中使用资源词典样式,而不合并词典_Wpf_Resources_Resourcedictionary - Fatal编程技术网

Wpf 在我的类库项目中使用资源词典样式,而不合并词典

Wpf 在我的类库项目中使用资源词典样式,而不合并词典,wpf,resources,resourcedictionary,Wpf,Resources,Resourcedictionary,我正在创建一个包含WPF用户控件的类库项目我的要求是所有控件都具有相同的样式。我的项目看起来像: 我为解决这个问题所做的事情: 添加了WPF应用程序系统.Xaml、WindowsBase等所需的所有引用。。这样我就可以在类库项目中使用wpf控件 在AssemblyInfo.cs中,我添加了: [汇编:ThemeInfo(ResourceDictionaryLocation.None,ResourceDictionaryLocation.SourceAssembly)] 将ResourceDic

我正在创建一个包含WPF用户控件的类库项目我的要求是所有控件都具有相同的样式。我的项目看起来像:

我为解决这个问题所做的事情:

  • 添加了WPF应用程序系统.Xaml、WindowsBase等所需的所有引用。。这样我就可以在类库项目中使用wpf控件
  • 在AssemblyInfo.cs中,我添加了:

    [汇编:ThemeInfo(ResourceDictionaryLocation.None,ResourceDictionaryLocation.SourceAssembly)]

  • 将ResourceDictionary1.xaml添加到添加样式的项目中



  • 现在,如果我想在UserControl1.xaml上使用样式,我会:

    
    


  • 我知道它工作得很好,但关键是。每次创建新的userControl时,我都必须合并字典。在一个常规的WPF应用程序上,我只需在App.xaml上合并一次字典,就可以在整个应用程序上使用该字典如何避免每次创建新的userControl时都必须合并词典?如果我计划添加新的资源词典,我必须转到所有userControl并合并另一个词典也许我写的问题标题不正确,我的问题应该是如何将App.xaml文件添加到类库项目中

    您应该替换源值
    ResourceDictionary1.xaml
    ,如下所示:

    Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml">
    
    或者简单如下:

    <UserControl.Resources>
        <ResourceDictionary Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml"></ResourceDictionary>
    </UserControl.Resources>
    
    
    
    您可以尝试将程序集的公共资源放入
    Themes\Generic.xaml
    资源字典中(生成操作设置为“页面”)。这就是WPF期望控件库的默认、独立于主题的样式的地方,所以这些资源应该自动加载到应用程序中。通常,该文件实际上并不声明任何资源,而是使用
    MergedDictionaries
    从其他文件中拉入资源。为什么不在解决方案中有一个wpf项目,并在其中添加类库作为引用呢。从那里,您可以调用用户控件或普通窗口作为启动屏幕。请参阅。简而言之,类库可以在设计时和运行时使用启动应用程序中定义的应用程序资源。
    <UserControl.Resources>
        <ResourceDictionary Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml"></ResourceDictionary>
    </UserControl.Resources>