因此,System.Windows.Media.Brushes是可冻结的。这意味着,如果在Brush上调用.Freeze(),它将变得不可修改。这样可以提高性能。
在WPF中,可以使用绑定来在其他属性发生更改时更新属性。
那么,当我创建“冻结”画笔但绑定颜色时会发生什么?冻结是优先还是绑定?
<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>
我尝试了一下,当我更改窗口的前景时,矩形的颜色会更新。这是否意味着即使笔刷被冻结,也可以修改它的颜色属性?还是将颜色冻结为一种结合物?这如何影响冻结对象的性能?
答案 0 :(得分:0)
绑定优先。
我尝试直接从后面的代码中修改画笔的颜色,这使我能够这样做(因此它没有冻结。)
然后,我尝试从后面的代码中冻结Brush,这引发了一个错误,指出“此可冻结对象无法冻结”。我的猜测是,绑定在XAML中引起了相同的错误,但被捕获了。