ListViewCachingStrategy Enum
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Enumerates caching strategies for a ListView.
This enumeration supports a bitwise combination of its member values.
public enum class ListViewCachingStrategy
[System.Flags]
public enum ListViewCachingStrategy
[<System.Flags>]
type ListViewCachingStrategy =
Public Enum ListViewCachingStrategy
- Inheritance
-
ListViewCachingStrategy
- Attributes
Fields
Name | Value | Description |
---|---|---|
RetainElement | 0 | Indicates that for every item in the List View's ItemsSource property, a single unique element will be constructed from the DataTemplate. |
RecycleElement | 1 | Indicates that unneeded cells will have their binding contexts updated to that of a cell that is needed. |
RecycleElementAndDataTemplate | 3 | Indicates that, in addition to the behavior specified by RecycleElement, DataTemplate objects that are selected by a DataTemplateSelector are cached by the data template type. |
Remarks
Application developers can specify one of these values when constructing a ListView to determine whether the List View will minimize their memory footprint and speed execution by recycling list cells, or will instead generate a cell for every item in the list. Currently, the default behavior is to retain item data in their generated cells when they are not needed. (Items are not needed, for example, when they are far enough off screen that their display is not imminent.) This behavior corresponds to a value of RetainElement. For performance reasons, it is likely that the default behavior will be changed to RecycleElement in a future release. In the meantime, for memory and performance reasons, app developers should specify RecycleElement when constructing a new List View.
The performance advantage of RecycleElement is so great that application developers have been provided with a XAML syntax shortcut for initializing List Views. Instead of x:TypeArguments
syntax that specifies a parameter for the ListView(ListViewCachingStrategy) constructor, XAML for Microsoft.Maui.Controls provides a XAML attribute for a non-existent property that corresponds to the caching strategy argument of the constructor. Application developers can set the CachingStrategy
attribute to either of the RecycleElement
(preferred) or RetainElement
values to choose a caching strategy. For example:
<ListView CachingStrategy="RecycleElement" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<!-- ... -->
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Note: when developers specify RecycleElement, OnElementChanged
events are not raised when cells are recycled. Instead, the cell is retained and its property values change when the binding context is updated to that of an available cell, OnElementPropertyChanged
events are raised. Application developers should remember to listen for the correct events, and should note that their renderers will need to be updated if the default behavior changes to RecycleElement in a future release.
Note: the UWP platform ignores RetainElement, because it always uses caching to improve performance. Therefore, if the developer has opted not to use data bindings, they must use OnBindingContextChanged() to update cell data on UWP, because it always behaves as if RecycleElement was specified.