доступ словарь ресурсов в код в WPF
такая же строка кода в таком же собрании работает для одного приспособления теста но не другого. Вот строка кода:
var dic = new ResourceDictionary { Source = new Uri("pack://application:,,,/MyApp.Wpf;component/ImageResources.xaml") };
ошибки я вам в другой тестовая система.UriFormatException: недопустимый URI: указан недопустимый порт.
строка uri также работает в xaml. Есть ли лучший способ загрузить словарь ресурсов в коде?
спасибо,
Berryl
= = = UPDATE ===
Как я нашел в этот проводки, недопустимый порт происходил, потому что схема пакета не была зарегистрирована, что можно сделать с кодом так:
if (!UriParser.IsKnownScheme("pack"))
UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);
Я предполагаю, что тестовый прибор, который смог загрузить словарь со схемой пакета без ошибок, потому что SUT является пользовательским элементом управления и каким-то образом загружает ресурсы при создании экземпляра пользовательского элемента управления.
2 ответов
то, что я использую с UriKind, как
var resource = new ResourceDictionary
{
Source = new Uri("/myAssemblyName;component/Themes/generic.xaml",
UriKind.RelativeOrAbsolute)
};
HTH
@Prince Ashitaka ответ расскажет вам, как исправить ваш URI
однако предпочтительным способом доступа к ResourceDictionary является то, что в XAML вы добавляете его как объединенный словарь
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ImageResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
затем вы можете получить доступ к нему через код, используя TryFindResource(string Key)
из любого кода за файлом