Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何冻结路径数据_Wpf_Xaml_Freezable - Fatal编程技术网

Wpf 如何冻结路径数据

Wpf 如何冻结路径数据,wpf,xaml,freezable,Wpf,Xaml,Freezable,我们的WPF应用程序中有许多复杂的路径。例如: <Path Data="M14.077,9.772C11.634,9.772 9.652,11.753 9.652,14.197 9.652,16.641 11.634,18.622 14.077,18.622 16.521,18.622 18.502,16.641 18.502,14.197 18.502,11.753 16.521,9.772 14.077,9.772 M28,12L28,16 24.085,16C23.84,17.369

我们的WPF应用程序中有许多复杂的
路径。例如:

<Path Data="M14.077,9.772C11.634,9.772 9.652,11.753 9.652,14.197 9.652,16.641 11.634,18.622 14.077,18.622 16.521,18.622 18.502,16.641 18.502,14.197 18.502,11.753 16.521,9.772 14.077,9.772 M28,12L28,16 24.085,16C23.84,17.369,23.325,18.643,22.592,19.763L25.313,22.485 22.485,25.314 19.791,22.62C18.668,23.383,17.383,23.924,16,24.189L16,28 12,28 12,24.163C10.638,23.88,9.378,23.322,8.274,22.554L5.514,25.314 2.686,22.485 5.504,19.668C4.802,18.57,4.306,17.331,4.068,16L0,16 0,12 4.144,12C4.427,10.722,4.943,9.533,5.656,8.485L2.686,5.515 5.514,2.686 8.513,5.684C9.558,5,10.734,4.499,12,4.236L12,0 16,0 16,4.21C17.285,4.456,18.48,4.946,19.545,5.626L22.485,2.686 25.313,5.515 22.431,8.397C23.176,9.467,23.718,10.685,24.008,12z" Fill="{TemplateBinding Foreground}" Height="12" Width="12" Stretch="Fill" VerticalAlignment="Center" HorizontalAlignment="Right"/>  

我们的大多数控制模板都需要广泛使用矢量图形,并在这些路径上应用多种效果


出于性能原因,我们希望冻结这些路径的
数据
,因为它不会被更改。我们使用的这种语法创建一个并为其分配数据
StreamGeometry
是可自由化的,但我们如何在xaml中冻结它?

您可以利用
PresentationOptions:freeze=“True”
属性。你可以阅读更多关于它的内容

来自MSDN的摘要:

将包含Freezable元素的IsFrozed状态设置为true。 不带 PresentationOptions:指定的冻结属性为IsFreeze 加载时为false,取决于加载时的一般可释放行为 运行时

isfreeze
设置为true与对可冻结对象调用
Freeze()
完全相同

在您的情况下,需要将PathGeometry设置为冻结

<Path>
    <Path.Data>
        <PathGeometry PresentationOptions:Freeze="True"
            Figures="..." />
    </Path.Data>
</Path>


谢谢。但我该如何为数据设置它呢?
不是指“冻结路径对象”吗<代码>路径
不可冻结,但其数据可冻结。请参阅更新的答案。编辑:@Clemens comment指出,在使用数据属性标记时,StreamGeometry在默认情况下是冻结的。我不知道!如果有人没有使用数据语法,我会把这个答案保存在这里。当StreamGeometry在XAML中通过路径标记创建时,它已经被冻结了。@Clemens,谢谢。一开始我是这么想的。但我们如何才能确定一个对象是否在运行时被冻结?还有关于这件事的参考资料吗?@Clemens你说得对
Path.Data.isfronged
返回true。您可以检查路径的
数据的
isfronged
属性。但无法快速找到MSDN上的任何参考。