【问题标题】:Using a user control library as dll reference in WPF在 WPF 中使用用户控件库作为 dll 引用
【发布时间】:2018-03-25 08:12:55
【问题描述】:

我有一个用户控件库项目,其中包含一些资源字典,使用 Microsoft Visual Studio 2017 创建。资源字典包含 XAML 样式,我希望团队中的其他开发人员可以在不同的 WPF 中使用它们 -应用项目。将用户控件库项目复制到 WPF-App 项目中并不是一个好的解决方案。 我尝试了以下方法:

  • UserControleLibraryProjectName/bin/debug/ 中的 .dll 添加到 WPF 应用程序中的引用。
  • 通过将使用的资源字典添加到 app.xaml 中,将使用的资源字典导入 WPF-App:

    <Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="pack://application:,,,/UserControleLibraryProjectName;component/ResourceDictionaryName.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Application.Resources>
    
  • 照常引用MainWindow.xaml 中的资源字典条目:例如Style="{StaticResource style1}"

它编译没有错误,但在启动时崩溃,因为它找不到引用的资源。 (System.Windows.Markup.XamlParseExceptionSystem.Windows.ResourceDictionary.Source) 我很确定我引用资源字典的源标记的语法是错误的,但我尝试了很多不同的方法...... 顺便提一句。用户控件库项目中没有错误,也没有我引用字典条目的MainWindow.xaml - 当我将资源字典代码直接复制到app.xaml 时,它工作正常。

你知道如何正确使用引用的dll吗?

【问题讨论】:

    标签: c# wpf xaml dictionary dll


    【解决方案1】:

    建议查看此问题的答案,因为据我所知,路径看起来不错。

    Loading merged ResourceDictionary from different assembly fails

    【讨论】:

      【解决方案2】:

      您的来源看起来正确。它是:

      <ResourceDictionary Source="pack://application:,,,/[AssemblyName];component/[PathToFile].xaml" />
      

      您还需要在应用中引用您的 ClassLibrary 才能使其正常工作。

      如果这不起作用,首先,如果您的程序集名称与您放入 App.xaml 中的名称相同,请检查您的项目属性。

      【讨论】:

        【解决方案3】:

        谢谢到目前为止,我发现了问题: 用户控件库项目的.net 版本高于 WPF-App 项目的版本。由于产生的不兼容性,Visual Studio 没有将 .dll 复制到 WPF-App 项目的 bin/debug/ 文件夹中。 另外,我必须将引用的用户控件库的构建类型设置为resource

        【讨论】:

          猜你喜欢
          • 2021-09-25
          • 2014-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-04
          • 1970-01-01
          • 2014-06-04
          • 2016-05-30
          相关资源
          最近更新 更多