#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 ,вам не нужно ничего делать в своем основном проекте. Я хочу реализовать этот эффект.