微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使资源库支持 wpf 中的智能感知,例如 MahMetro 或 MaterialDesign Toolkit?

如何解决如何使资源库支持 wpf 中的智能感知,例如 MahMetro 或 MaterialDesign Toolkit?

我正在处理一个包含太多资源、自定义控件和用户控件的复杂项目。我将所有资源,例如画笔、图像、样式...提取一个独立的项目中。它有效。在我的主项目和其他模块中,我可以使用引用项目中的资源。

但是,当我将资源项目构建到一个 dll,然后主项目引用 dll(不是项目)时,我无法获得智能支持

另一方面,当我使用 MahMetro 或 nuget 的 MaterialDesign 时,我确实得到了智能支持

在两个场景中,我通过pack sytax使用外部资源库(我的和MahMetro/MaterialDesign的),例如:

 <ResourceDictionary Source="pack://application:,/{DllName};component/{DllPath}/{resourceDictionaryNam}.xaml" />

那么,我在构建资源库时丢失了什么吗?我想知道为什么MahMetro和MaterialDesign可以支持Intelli-sense。

希望有人能帮助我。

解决方法

您需要在 WPF 项目的 Properties 文件夹中添加 DesignTimeResources.xaml ResourceDictionary。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="PathToTheDictionary"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

您还需要编辑 .csproj 并包含您的资源字典

<ItemGroup>
  <Page Include="Properties\DesignTimeResources.xaml">
    <SubType>Designer</SubType>
    <Generator>MSBuild:Compile</Generator>
    <ContainsDesignTimeResources>true</ContainsDesignTimeResources>
  </Page>
</ItemGroup>

更多信息:https://antonymale.co.uk/design-time-resources-in-wpf.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。