У меня есть много «забавных» попыток сделать мои поля (и ширины) в моем XAML совместимыми вместе с другими полями в одном приложении и маржах в других приложениях в том же «комплекте» приложений.Есть ли существенные накладные расходы, определяя поля как статические ресурсы?
Так у меня появилась идея, чтобы определить поля, как staticresources:
<Thickness x:Key="MarginDetailTabPageContent">0</Thickness>
<Thickness x:Key="MarginLeftHeader">2,4,2,2</Thickness>
<Thickness x:Key="MarginAdditionalInfoOnTop">1,2,2,0</Thickness>
<Thickness x:Key="MarginSmallHeaderOnTop">1,2,2,0</Thickness>
<Thickness x:Key="MarginFieldWithAdditionalMarginOnTop">0,0,2,2</Thickness>
<System:Double x:Key="WidthSmallField">70</System:Double>
..и тогда я планирую использовать эти staticresources везде .. этикетки, TextBlocks, текстовые поля, checkboxed .. на почти все элементы управления в моем заявление.
Но прежде чем я сделаю это довольно трудоемкое изменение, я бы хотел, чтобы ваше мнение экспертов о том, как это повлияет на производительность.
Как-то, на мой взгляд, я решил, что использование staticresource - запись <TextBlock Margin="{StaticResource=MarginLeftHeader}" ... />
вместо <TextBlock Margin="2,4,2,2" ... />
- везде стоит хотя бы вызов некоторой функции для каждого используемого места. Это правильно?
Общий вопрос: сможет ли пользователь почувствовать какие-либо изменения в производительности (к худшему .. или к лучшему)?
Обычно XAML загружается в метод InitializeComponent, который вызывается в конструкторе вашего компонента. Таким образом, поиск ресурсов выполняется при создании экземпляра окна/элемента управления/независимо, очевидно, в __runtime__. –
Из библиотеки MSDN: 'Статический ресурс предоставляет значение для любого атрибута свойства XAML, просматривая ссылку на уже определенный ресурс. Поведение поиска для этого ресурса аналогично поиску во время компиляции. « – gliderkite
Это не имеет никакого смысла для меня.Поиск ресурса 'StaticResource' выполняется во время выполнения. Вы можете легко проверить его, добавив ресурсы в «App.Resources», когда начнется ваше приложение, и используйте их в своем XAML. –