Как сделать поддержку библиотеки ресурсов разумной в wpf,например MahMetro или MaterialDesign Toolkit?

#c# #wpf #resourcedictionary #mahapps.metro #material-design-in-xaml

Вопрос:

Я работаю над сложным проектом,который содержит слишком много ресурсов, пользовательских элементов управления и пользовательских элементов управления.Я извлек все ресурсы,такие как кисти,изображения,стили…к независимому проекту. Это работает.В моем основном проекте и других модулях я могу использовать ресурсы в обновленном проекте.

Но когда я создаю проект resouce в dll, а затем основной проект ссылается на dll(не проект), я не могу получить интеллектуальную поддержку.

С другой стороны,когда я использую MahMetro или MaterialDesign от nuget,я действительно получаю интеллектуальную поддержку.

В двух сценариях я использую библиотеки внешних ресурсов(мои и MahMetro/MaterialDesign) через pack sytax,такие как:

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

Итак,я что-нибудь потерял, когда создавал библиотеку ресурсов?Я хочу знать, почему MahMetro и MaterialDesign могут поддерживать интеллектуальный смысл.

Я надеюсь, что кто — нибудь сможет мне помочь.

Ответ №1:

Вам нужно будет добавить каталог ресурсов DesignTimeResources.xaml в папку Свойств вашего проекта WPF.

 <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="PropertiesDesignTimeResources.xaml">
    <SubType>Designer</SubType>
    <Generator>MSBuild:Compile</Generator>
    <ContainsDesignTimeResources>true</ContainsDesignTimeResources>
  </Page>
</ItemGroup>
 

Подробнее здесь: https://antonymale.co.uk/design-time-resources-in-wpf.html

Комментарии:

1. Спасибо за ваш ответ! Я попробую этот метод позже. Я думаю, это сработает. Но я хочу большего. Вы знаете,когда вы используете Metro или Materialdesign ,вам не нужно ничего делать в своем основном проекте. Я хочу реализовать этот эффект.