Оптимизация производительности при использовании Shadow в UI

У меня есть такой пример разметки с использованием эффекта DropShadowEffect

<Window.Resources>
    <Style x:Key="ShadowStyle"
           TargetType="Border">
        <Setter Property="Effect">
            <Setter.Value>
                <DropShadowEffect BlurRadius="85"
                                  Opacity="0.9"
                                  ShadowDepth="0" />
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <Border Margin="30"
            Background="Gray"
            CornerRadius="35"
            Style="{StaticResource ShadowStyle}">
        <ScrollViewer Margin="35"
                      VerticalScrollBarVisibility="Auto">
            <ItemsControl ItemsSource="{Binding coll}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Vertical" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Border Margin="10"
                                Background="Green">
                            <StackPanel Orientation="Horizontal">

                                <TextBlock Margin="10"
                                           FontSize="20"
                                           Text="{Binding Title}" />
                                <TextBlock Margin="10"
                                           FontSize="20"
                                           Text="{Binding Company}" />
                            </StackPanel>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>
    </Border>
</Grid>

Выглядит все это вот так Выглядит не очень, но это лишь пример

При скролле появляется сильная загрузка GPU, заметны неприятные задержки при прокрутке. Если отключить стиль ShadowStyle в элементе Border, проблема исчезает. Я предполагаю что это связано с особенностями рендеринга WPF (скорее всего при прокрутке пересчитывается тень под Item-ами), и видимо с этим ничего не сделать. И все же, существуют ли в WPF какие-либо варианты улучшить производительность сохранив при этом визуальный эффект тени?


Ответы (0 шт):