<ResourceDictionary>
<Style x:Key="Frame0" TargetType="Shape">
<Setter Property="Stroke" Value="Transparent" />
<Setter Property="StrokeThickness" Value="0" />
</Style>
</ResourceDictionary>
<Canvas x:Name="canvas" Height="346" Width="643">
<Rectangle Style="{StaticResource Frame0}" Stroke="Red" StrokeThickness="2" Height="77" Canvas.Left="26" Canvas.Top="13" Width="119" />
</Canvas>
我希望任何使用我的资源字典的人始终遵守我的规则。我的风格应该是第一要务。怎么实现呢?目前, Stroke =“Red”和 StrokeThickness =“2”会覆盖我的规则。
答案 0 :(得分:4)
据我所知,没有办法让样式值覆盖本地值。查看order of precedence,您会看到列表中的本地值为第3位,前面只有coerced values, and values from active animations。
如果您确实需要全局强制该值,那么您可以考虑创建一个派生控件,在适当的依赖项属性中设置coerced values。
答案 1 :(得分:2)
当你以这种方式使用时,你不能阻止人们覆盖你的财产。
可能能够执行此操作的唯一方法是基于Rectangle
(或您想要的任何对象)创建用户控件,并且不公开相关属性。但是,这并不能阻止人们直接使用Rectangle
。
答案 2 :(得分:1)
订单真的很重要。 样式的优先级最低,这意味着任何人都可以覆盖它。