У нас есть много сложных Path
s в нашем приложении WPF. Примером может быть:Как заморозить данные пути
<Path Data="M14.077,9.772C11.634,9.772 9.652,11.753 9.652,14.197 9.652,16.641 11.634,18.622 14.077,18.622 16.521,18.622 18.502,16.641 18.502,14.197 18.502,11.753 16.521,9.772 14.077,9.772 M28,12L28,16 24.085,16C23.84,17.369,23.325,18.643,22.592,19.763L25.313,22.485 22.485,25.314 19.791,22.62C18.668,23.383,17.383,23.924,16,24.189L16,28 12,28 12,24.163C10.638,23.88,9.378,23.322,8.274,22.554L5.514,25.314 2.686,22.485 5.504,19.668C4.802,18.57,4.306,17.331,4.068,16L0,16 0,12 4.144,12C4.427,10.722,4.943,9.533,5.656,8.485L2.686,5.515 5.514,2.686 8.513,5.684C9.558,5,10.734,4.499,12,4.236L12,0 16,0 16,4.21C17.285,4.456,18.48,4.946,19.545,5.626L22.485,2.686 25.313,5.515 22.431,8.397C23.176,9.467,23.718,10.685,24.008,12z" Fill="{TemplateBinding Foreground}" Height="12" Width="12" Stretch="Fill" VerticalAlignment="Center" HorizontalAlignment="Right"/>
Большинство наших шаблонов управления требуют широкого использования векторной графики и множественного эффекта применяются на этих путях.
По соображениям производительности мы хотим заморозить Data
этих путей, так как он не будет изменен. Этот синтаксис, который мы используем, создает StreamGeometry
и присваивает ему данные. StreamGeometry
является замораживаемым, но как мы можем его заморозить в нашем xaml?
StreamGeometry уже заморожен, когда он создан в XAML путем разметки пути. – Clemens
@ Clemens Спасибо. Сначала я подумал. Но как мы можем убедиться, что объект заморожен во время выполнения, чтобы быть уверенным? И любые ссылки по этому вопросу? – SepehrM
@Clemens Вы правы. 'Path.Data.IsFrozen' возвращает true. – SepehrM