Я создал пользовательскую библиотеку управления и создал элемент управления под названием «FlipView» в корневом пути. Затем я удалил стиль в Generic.xaml
и переместил его в свой собственный словарь ресурсов с именем FlipView.xaml
в корневом пути. Теперь я сливаю этот словарь ресурсов в Generic.xaml
, используя следующий код:Pack URI не работает для обобщенных словарей generic.xaml
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FlipView.xaml" />
</ResourceDictionary.MergedDictionaries>
Тогда я использовал элемент управления в другом МОФ проекте, но он бросает XamlParseException
с InnerException
говоря
Не удается найти ресурс «FlipView. XAML.
Почему это не так? Словарь ресурсов находится в корневом пути проекта библиотеки управления.
Если я заменю Source
установщик имущества с "pack://application:,,,/MyCustomControls;component/FlipView.xaml"
(MyCustomControls
- это имя моей пользовательской библиотеки управления), он отлично работает.
Generic.xaml:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyCustomControls;component/FlipView.xaml" />
</ResourceDictionary.MergedDictionaries>
Почему это так?
Для проектов WPF это кажется излишним, поскольку pack://application,,,/
относится к корневому пути, а WpfAssemblyName;component/
снова относится к корневому пути. Почему это необходимо для Generic.xaml
?
Редактировать: Я видел this вопрос, но он не объясняет почему.
№ Это не ссылка. Generic.xaml, flipview.xaml и flipview.cs находятся в корне библиотеки библиотеки управления. –
Посмотрите на третий рисунок [здесь] (https://msdn.microsoft.com/en-us/library/aa970069 (v = vs.100) .aspx # The_Pack_URI_Scheme). Пакеты URI в приложении относятся к сборке приложений, даже если они используются в библиотеке. Ваш ресурс находится в ссылочной сборке, поэтому вам нужно будет указать его имя. – Clemens
StepUp, это тоже не работает. @ Клеменс, это объясняет это. StepUp, можете ли вы уточнить ответ с комментарием Клеменса? Или, может быть, Клеменс может добавить ответ? –