¿Cómo pueden los objetos WPF derivados de Freezable congelarse en XAML?
performance (2)
Agregue esto a sus declaraciones de espacio de nombres xaml:
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="po"
luego, en tus objetos freezables, incluye este atributo
po:Freeze="True"
Muchos tipos en WPF derivan de Freezable
. Proporciona inmutabilidad a objetos POCO mutables y permite un mejor rendimiento en ciertas situaciones.
Entonces mi pregunta es, ¿cómo puedo congelar objetos en el marcado XAML?
(Tenga en cuenta que también he publicado una pregunta similar pero diferente ).
Para congelar un objeto Freezable
declarado en marcado, use el atributo Freeze
definido en el espacio de nombres XML http://schemas.microsoft.com/winfx/2006/xaml/presentation/options
.
En el siguiente ejemplo, un SolidColorBrush
se declara como un recurso de página y se congela. Luego se usa para establecer el fondo de un botón.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="po">
<Page.Resources>
<!-- This brush is frozen -->
<SolidColorBrush x:Key="MyBrush" po:Freeze="True" Color="Red" />
</Page.Resources>
<!-- Use the frozen brush -->
<Button Background="{StaticResource MyBrush}">Click Me</Button>
</Page>