#c# #wpf #visual-studio-2010 #xaml #resourcedictionary
#c# #wpf #visual-studio-2010 #xaml #resourcedictionary
Вопрос:
У меня есть проект, который содержит точку входа моего приложения и ResourceDictionary. В первый раз эти файлы были расположены в корне проекта. В это время я мог видеть все компоненты (кнопка для примера), измененные стилем в конструкторе файлов xaml в других проектах.
Теперь у меня есть вложенные папки, подобные этой: src / launcher, которая содержит мою точку входа, и src / styles, которая содержит мой ResourceDictionary. Но теперь компоненты не оформлены в конструкторе VS2010. Программа компилируется и работает хорошо, но конструктор не работает. Я постоянно получаю ошибку «Не удается найти ресурс …». Код моего основного файла xaml :
<Application x:Class="MANAGER.Program"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources>
<ResourceDictionary Source="../Styles/Style.xaml"></ResourceDictionary>
</Application.Resources>
</Application>
Почему конструктор не работает?
Ответ №1:
Ваш код должен выглядеть таким образом, чтобы использовать подкаталоги из корневого каталога вашего приложения:
<Application x:Class="MANAGER.Program"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources>
<ResourceDictionary Source="pack://siteoforigin:,,,../Styles/Style.xaml"></ResourceDictionary>
</Application.Resources>
</Application>
Ответ №2:
Это может быть как-то связано с форматом атрибута «Source». Формат должен быть URI пакета, например «pack://siteoforigin:,,,/SiteOfOriginFile.xaml»
Взгляните на эти документы в MSDN:
Комментарии:
1. Я пробовал «Source=»pack://siteoforigin:,,,/src/style/style.xaml», но программа не запускается. В начале строки есть исключение. Я тоже пробовал «Source=»pack://application:,,,/src/style/style.xaml». Программа запущена, но у меня та же проблема, что и в вопросе
2. То, что WPF интерпретирует как каталог siteOfOrigin, зависит от того, какое приложение у вас есть (автономное, один раз закрытое, …). Получите отладочный вывод интерпретируемого пути siteOfOrigin и сравните его с вашей реальной структурой папки в файловой системе и посмотрите, действительно ли он ищет файл там, где вы его ожидаете. Также, пожалуйста, проверьте, нужно ли добавить дополнительный UriKind ( msdn.microsoft.com/de-de/library/system.urikind.aspx ) параметр для различения абсолютного и относительного путей. Работает ли он с полным абсолютным путем?