Kolumne: WPF und Windows-Apps

XAML-Tipps: WPF – Verzögertes Rendern beim Scrollen
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Verzögertes Rendern beim Scrollen“.

Die Inhaltssteuerelemente mit komplexen DataTemplates und zahlreichen Daten können ein flüssiges Scrollen verhindern. Das liegt daran, dass der Rendervorgang und die Threads enorm viel Arbeit bekommen und die CPU-Auslastung damit sehr hoch wird.

WPF: Flüssiges Scrollen – so funktioniert´s

Eine mögliche Lösung kann das Auslagern an die GPU mittels BitmapCache sein. Sind im DataTemplate allerdings interaktive Steuerelemente vorhanden, kann das unerwünschte Seiteneffekte hervorrufen. Eine Alternative bietet das Attached Property ScrollViewer.IsDeferredScrollingEnabled, das für ein verzögertes Rendern sorgt. So wird das Inhaltssteuerelement erst gerendert, wenn der Benutzer die Maustaste wieder loslässt. Listing 1 zeigt dessen Einsatz bei einer ListBox.

<ListBox ItemsSource="{Binding Products}" Width="300"
         ScrollViewer.IsDeferredScrollingEnabled="True">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <Image Source="{Binding Image}" Height="100"/>
        <StackPanel Margin="10,0">
            <TextBlock Text="{Binding Name}" FontWeight="Bold" />
            <TextBlock Text="{Binding Description}"/>
            <TextBlock Text="{Binding Price}" FontStyle="Italic"/>
        </StackPanel>
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

Aufmacherbild: Computer mouse isolated on the yellow background via Shutterstock / Urheberrecht: Garsya

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -