db7uk
Вы не должны иметь файл app.xaml в библиотеке пользовательского элемента управления. избавься от этого.
Проблема заключается в том, что библиотека пользовательского элемента управления действительно предназначена для UIelements, которые эффективно сообщают, какие ресурсы использовать приложению, ссылающемуся на библиотеку пользовательского элемента управления. Обходной путь состоит в том, чтобы создать словарь ресурсов с содержащимися в нем ресурсами (и / или ссылками), а затем на элементах управления пользователя ссылаться на этот ресурс в разделе usercontrol.resources.
т. е.(обратите внимание, что это из проекта Silverlight, но принципы те же самые)
словарь ресурсов
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="TextBlockWithMargin" TargetType="TextBlock">
<Setter Property="Margin" Value="10" />
</Style>
Пользовательский элемент управления
<UserControl x:Class="x.x.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ProjectA;component/MyResourceDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" removed="White">
</Grid>
</UserControl>
Обычно ресурсы задаются в приложении app.xaml. Вы упомянули, что приложение было изменено на usercontrol lib. Так где же на это будут ссылаться? Вы хотите сказать, что хотите запустить библиотеку usercontrol самостоятельно?
Чтобы обойти ошибки времени компиляции, вы можете использовать {DynamicResource Foreground}. Динамический ресурс не будет установлен до времени выполнения, поэтому компиляции должны работать. Однако у вас все равно будут проблемы, если usercontrol не знает или не может найти правильный ресурс.
Если вы предоставите немного больше информации о том, что вы делаете или хотите достичь, то я, вероятно, смогу помочь вам в дальнейшем.
спасибо
Tapirro
Я скопировал вашу часть из пользовательского элемента управления в мое главное окно xaml, используя мой источник словаря ресурсов (взятый из app.xaml). Как вы уже сказали, я также удалил файл App.xaml, и теперь все работает отлично. Спасибо!