因此,System.Windows.Media.Brushes 是可冻结的。这意味着如果您在 Brush 上调用 .Freeze() ,它将变得不可修改。这提高了性能。
在 WPF 中,您可以使用绑定作为在其他属性更改时更新属性的一种方式。
那么,当我创建 Frozen 画笔但绑定颜色时会发生什么?冻结优先还是绑定优先?
<Window x:Class="WpfApplication4.MainWindow"
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"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Foreground="Green">
<Window.Resources>
<SolidColorBrush x:Key="foregroundCopy" Color="{Binding Foreground}" po:Freeze="True"/>
</Window.Resources>
<Rectangle Fill="{StaticResource foregroundCopy}"/>
</Window>
我试过了,当我改变窗口的前景时,矩形的颜色会更新。这是否意味着您可以修改画笔的颜色属性,尽管它被冻结了?还是颜色被冻结为绑定?这如何影响冻结对象的性能增益?