首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在XAML中冻结从Freezable派生的WPF对象?

如何在XAML中冻结从Freezable派生的WPF对象?
EN

Stack Overflow用户
提问于 2009-04-28 21:26:41
回答 2查看 10.9K关注 0票数 32

WPF中的许多类型都是从Freezable派生的。它为可变的POCO对象提供了不变性,并允许在某些情况下提高性能。

所以我的问题是,如何冻结XAML标记中的对象?

(请注意,我也发布了一个similar but different question )。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-29 12:16:04

要冻结在标记中声明的Freezable对象,可以使用在XML名称空间http://schemas.microsoft.com/winfx/2006/xaml/presentation/options中定义的Freeze属性。

在下面的示例中,SolidColorBrush被声明为页资源并被冻结。然后它被用来设置按钮的背景。

代码语言:javascript
运行
复制
<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>

来源:Freezable Objects Overview

票数 45
EN

Stack Overflow用户

发布于 2009-04-29 11:17:58

将此代码添加到xaml名称空间声明中:

代码语言:javascript
运行
复制
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="po"

然后,在freezable对象中包含以下属性

代码语言:javascript
运行
复制
po:Freeze="True"
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/799890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档