У меня в компании есть библиотека с разными "кастомными" контролами для WPF
. "Кастомные", они лишь потому что там изменена визуальная составляющая, а именно своих, переделанных стандартных, еденицы.
Недавно в проект, над которым я работаю, добавил данную библиотеку. Прописал в своем Themes/Generic.xaml
и добавил референсы , все как надо :
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/WpfInsideControls;component/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
Стили заработали, но ! У меня есть огромный DataGrid, тоже "кастомный", в котором лежит порядка 100т объектов, включена виртуализация по строкам. Всякий раз когда я пытался проскролить вниз, в Debug сыпались варнингы, о том что стиль не подтянулся, при этом UI начал тормозить, но все прорисовывалось.
На StackOverFlow нашел, что необходимо использовать не DynamicResource
, а StaticResource
. А теперь внимание : стили автоматически применяются к контролам, мне не надо явно указывать каждому контролу какой стиль брать, просто подтягиваю dll
и добавляю в ResourceDictionary
.
Я поразмышляв подумал, что если WPF воспринимает стили динамическими, это мои догадки, надо их сделать статическими. Я прописал при инициализации приложения следующее :
Application.Current.Resources.MergedDictionaries.Add(Application.LoadComponent(new Uri("/WpfInsideControls;component/Themes/Generic.xaml", UriKind.Relative)) as ResourceDictionary);
То есть я напрямую своему WPF
приложению говорю, что "Будь добр приатачиться сюда", в xaml
все осталось прежним. И о чудо! Заработало и не сыпит варнинги, и UI не провисает!
Вопрос : Почему и как было вызвано данное поведение, мое решение правильное?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть след код, меня интересует, происходит ли в этом случае экономия памяти?