在以下示例
中初始化列表属性之后,有没有办法最后执行附加行为<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(如果有人认为这是重复的,那么投票关闭它而不是这个,在这里我已经知道问题并且它更清楚地描述了。)
答案 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