WPF 中的许多类型都派生自Freezable
. 它为可变 POCO 对象提供不变性,并允许在某些情况下提高性能。
所以我的问题是,如何冻结 XAML 标记中的对象?
(请注意,我也发布了一个类似但不同的问题)。
WPF 中的许多类型都派生自Freezable
. 它为可变 POCO 对象提供不变性,并允许在某些情况下提高性能。
所以我的问题是,如何冻结 XAML 标记中的对象?
(请注意,我也发布了一个类似但不同的问题)。
要冻结Freezable
标记中声明的对象,请使用Freeze
XML 命名空间中定义的属性http://schemas.microsoft.com/winfx/2006/xaml/presentation/options
。
在以下示例中,aSolidColorBrush
被声明为页面资源并被冻结。然后它用于设置按钮的背景。
<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>
来源:可冻结对象概述
将此添加到您的 xaml 命名空间声明中:
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="po"
然后,在您的可冻结对象中,包含此属性
po:Freeze="True"