C# 如何让样式覆盖其他属性

C# 如何让样式覆盖其他属性,c#,wpf,xaml,C#,Wpf,Xaml,我希望任何使用我的资源字典的人都要遵守我的规则。我的风格应该放在第一位。如何做到这一点?目前,Stroke=Red和StrokeThickness=2将覆盖我的规则。据我所知,样式值无法覆盖本地值。查看,您将看到本地值在列表中排名第三,前面只有 如果您真的需要全局性地强制这个值,那么您可以考虑在适当的依赖属性中设置派生控件。当使用这种属性时,不能阻止人们重写属性。 唯一可以做到的方法是基于矩形或所需的任何对象创建用户控件,并且不公开相关属性。然而,这并不能阻止人们直接使用矩形。顺序真的很重要。样

我希望任何使用我的资源字典的人都要遵守我的规则。我的风格应该放在第一位。如何做到这一点?目前,Stroke=Red和StrokeThickness=2将覆盖我的规则。

据我所知,样式值无法覆盖本地值。查看,您将看到本地值在列表中排名第三,前面只有


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

当使用这种属性时,不能阻止人们重写属性。

唯一可以做到的方法是基于矩形或所需的任何对象创建用户控件,并且不公开相关属性。然而,这并不能阻止人们直接使用矩形。

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

<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>