0
<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" 会覆盖我的规则。

4

3 回答 3

4

据我所知,没有办法让样式值覆盖本地值。查看优先顺序,您会看到本地值在列表中排在第三位,前面只有强制值和来自活动动画的值。

如果您确实需要全局强制该值,那么您可以考虑制作一个派生控件,该控件在适当的依赖属性中设置强制值。

于 2012-11-28T22:51:48.467 回答
2

当他们以这种方式使用时,您无法阻止人们覆盖您的属性。

您可能能够做到的唯一方法是基于Rectangle(或您想要的任何对象)创建用户控件并且不公开相关属性。但是,这并不能阻止人们直接使用Rectangle

于 2012-11-28T22:52:23.077 回答
1

顺序真的很重要。样式的优先级最低,这意味着任何人都可以覆盖它。

于 2013-05-24T17:44:54.880 回答