xaml中元素属性的执行顺序

本文关键字:执行 顺序 属性 元素 xaml | 更新日期: 2023-09-27 18:14:09

是否有方法在列表属性初始化后最后执行附加行为

<LinearGradientBrush local:FreezeBehavior.IsFrozen="True">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>

可以这样做

<GradientStopCollection x:Key="SomeKey">
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="White" Offset="1"/>
</GradientStopCollection>
<LinearGradientBrush GradientStops="{StaticResource SomeKey}" local:FreezeBehavior.IsFrozen="True"/>

但是它需要创建几十个不必要的ResourceDictionary条目。

注::相关问题(如果有人认为这是重复的,那么投票关闭它而不是这个,这里我已经知道问题,它更清楚地描述)。

xaml中元素属性的执行顺序

我猜执行流是基于XAML解析器的,并在解析属性中出现。所以你可以尝试重新排序属性的声明。像这样:

<LinearGradientBrush>
    <GradientStop Color="Black" Offset="0"/>
    <GradientStop Color="White" Offset="1"/>
    <local:FreezeBehavior.IsFrozen>True</local:FreezeBehavior.IsFrozen>
</LinearGradientBrush>

可能您必须使用<sys:Bool>True</sys:Bool>作为FreezeBehavior.IsFrozen的值