xaml中元素属性的执行顺序

时间:2014-07-22 07:11:07

标签: c# wpf xaml attached-properties

在以下示例

中初始化列表属性之后,有没有办法最后执行附加行为
<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条目。

P.S。:related question(如果有人认为这是重复的,那么投票关闭它而不是这个,在这里我已经知道问题并且它更清楚地描述了。)

1 个答案:

答案 0 :(得分:2)

我猜执行流程基于XAML Parser,并且在它们出现时的解析属性中。因此,您可以尝试重新排序属性的声明。像这样:

<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

的值