What is a Freezable?

Platform: WPF| Category: Freezable Object

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

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.