Первое, что мне нужно отметить, это то, что WPF рендерит с использованием DirectX. Если DirectX недоступен, система автоматически по умолчанию использует программное средство рендеринга (что намного медленнее).
Теперь, если DirectX доступен (что справедливо для всех полноценных компьютеров, но не для «портативных устройств»), следующая проблема, с которой вы столкнулись, - это мощность вашей видеокарты (или чипа).
Я поднял этот вопрос, потому что вы упомянули, что ваш код использует стили на переносном устройстве (я предполагаю, что это не ноутбук). Если это так, то операции на настольном компьютере могут оказаться очень медленными на вашем портативном устройстве.
Теперь, ваши стили сложны? или у них много работы по рендерингу? (т.е. сложные градиенты). Если это так, возможно, вы могли бы подумать об уменьшении (или исключении) их из приложения, когда оно выполняется на вашем портативном устройстве.
WPF предоставляет хороший способ определить, способен ли аппарат, на котором выполняется программное обеспечение, справляться с нагрузкой.
Код будет:
int RenderTier = (RenderCapability.Tier >> 16);
Теперь, если RenderTier == 0, то у вас есть видеокарта (или чип), которая не может обеспечить аппаратное ускорение, поэтому весь рендеринг будет выполняться с использованием программного средства рендеринга WPF (на ЦП).
Если RenderTier == 1, то у вас есть частичное ускорение. Некоторые операции будут выполняться на видеокарте, другие - на процессоре
если RenderTier == 2, у вас полное аппаратное ускорение, весь рендеринг будет выполняться на видеокарте.