От this page, я прочитал:Совместное использование приложений Ресурсы в WPF
Если ваше приложение использует пользовательские элементы управления и определяет ресурсы в ResourceDictionary (или узел XAML ресурсов), то рекомендуется либо определить ресурсы на Уровня приложения или окна или определить их в теме по умолчанию для пользовательских элементов управления. Определение ресурсов в ResourceDictionary настраиваемого элемента управления влияет на производительность каждого экземпляра этого элемента управления.
Хорошо ... Теперь у меня есть UserControl, который определяет следующие ресурсы:
<UserControl ...>
<UserControl.Resources>
<Namespace:ImagesConverter x:Key="ImagesConverter" ...
<Storyboard x:Key="AnimationHide" ...
</UserControl.Resources>
Таким образом, из-за того факта, я создаю не менее 100 экземпляров из них во время выполнения, так как в учебнике MSDN, было бы лучше переместить эти ресурсы на MainWindow или App level. Где лучше всего их переместить? Уровень MainWindow, уровень приложения или файл ресурсов? И почему?
А потом ... как я могу использовать их со своего нового места? Скажем, у меня есть этот код внутри моего UserControl:
m_AnimationHide = (Storyboard)Resources["AnimationHide"];
Как я должен изменить его, чтобы отразить эти изменения? И как мне изменить следующий фрагмент UserControl XAML?
Source="{Binding Source={x:Static Properties:Resources.MyImage}, Converter={StaticResource ImagesConverter}}"
Мне понравилось, что вы сказали, но что-то не так. У меня есть код в моем UserControl, который выглядит так: 'animation.Completed + = обработчик;'. Всякий раз, когда я достигаю этого. моя ошибка приложения говорит мне: 'DoubleAnimation должен иметь значение IsFrozen для false для изменения'. Эти анимации должны что-то сделать в UserControl, которые уволили их после завершения. Как это исправить? –
Это потому, что вы не можете изменить статический ресурс как замороженный, я добавил обходной путь к моему ответу –
Спасибо! Я пробовал первый подход (все в App), и он работает как шарм. Теперь я пытаюсь со вторым (все в MainWindow) ... но я получаю неурегулированные ошибки ресурсов всякий раз, когда я пытаюсь ссылаться на ресурс MainWindow в свой пользовательский UserControl. Зачем? –