A Freezable is a special type of object that has two states: ’unfrozen’ and ’frozen’. When unfrozen, a Freezable appears to behave like any other object, and it can no longer be modified. It also provides a changed event to notify observers of any modifications to the object. it improves performance, because it no longer needs to spend resources on change notifications. A frozen Freezable can also be shared across threads, while an unfrozen Freezable cannot be shared across threads. The Freezable class makes it easier to use certain graphics system objects and can help improve application performance.
To freeze a Freezable object declared in markup, you can use the PresentationOptions ‘Freeze’ attribute.
In the following example, a ’SolidColorBrush’ is declared as a page resource and frozen. It is then used to set the background of a button.
[XAML]
<Page
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:PresentationOptions='http://schemas.microsoft.com/winfx/2006/xaml/presentation/options'
xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'
mc:Ignorable='PresentationOptions'>
<Page.Resources>
<!-- This resource is frozen. -->
<SolidColorBrush
x:Key='MyBrush'
PresentationOptions:Freeze='True'
Color='Red' />
</Page.Resources>
<StackPanel>
<Button Content='A Button'
Background='{StaticResource MyBrush}'>
</Button>
</StackPanel>
</Page>
Share with