У меня есть приложение WPF, содержащее MainWindow, которое просто отображает MainUserControl, и оно также содержит App.xaml со словарями Merged:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources\Styles.xaml"/>
<ResourceDictionary Source="Resources\DataTemplates.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Тогда я решил использовать MainUserControl в другом проекте, где он должен отображаться в ElementHost. К сожалению, это не работает, потому что стили и шаблоны данных из словарей ресурсов не найдены. Я не знаю, как решить эту проблему, но решил, что могу переместить код ResourceDictionaries в ресурсы MainUserControl:
<UserControl.Resources>
<ResourceDictionary>
<!-- the same code -->
</ResourceDictionary>
</UserControl.Resources>
Это вызвало ошибку с моими конвертерами, которые я использовал в словарях ресурса - Невозможно создать неизвестный тип '{clrnamespace: MyApplication.Converters; assembly = MyApplication} LengthToStringConverter
, Я попытался переместить конвертеры за пределы словарей ресурсов, добавив еще один ResourceDictionary с моими конвертерами:
<ResourceDictionary>
<con:LengthToStringConverter x:Key="textConverter"/>
<con:DateToTextConverter x:Key="dateConverter"/>
</ResourceDictionary>
Это также вызвало исключение xaml (предоставьте значение для 'System.Windows.StaticResourceExtension', вызвавшее исключение.).
Итак, я ищу способ решения проблемы с конвертерами, которую невозможно найти в словарях ресурсов, или другой способ решения проблемы с использованием класса MainUserControl в другом проекте (он вообще не может найти ресурсы, возможно, есть способ их указать?).