WPF样式基于当前

时间:2009-11-20 14:51:43

标签: wpf xaml styles

有没有办法创建一个扩展当前样式的样式,即不是特定的样式?

我有一个WPF应用程序,我在其中创建样​​式来设置边框或验证等属性。

    <Style TargetType="{x:Type Button}"  
           BasedOn="{StaticResource {x:Type Button}}">
        <Setter Property="Padding" Value="5,2,5,2"/>
    </Style>

现在我想尝试一些主题,看哪哪个最适合我的应用程序。问题是要做到这一点我需要将我所有样式的BasedOn属性更改为主题中的样式。

    <Style TargetType="{x:Type Button}"  
           BasedOn="="{x:Static ns:SomeTheme.ButtonStyle}">">
        <Setter Property="Padding" Value="5,2,5,2"/>
    </Style>

我可以通过搜索/替换来做到这一点,但如果可以动态完成它会很好。

3 个答案:

答案 0 :(得分:5)

你只需要这样做,没有快捷方式,你必须至少设置BasedOn属性。

答案 1 :(得分:1)

如果您将所有资源存储在ui中的单独程序集中,那么您可以使用主题在运行时动态更改它们。

themes in seperate assembly

loading different themes at runtime

答案 2 :(得分:-3)

您是否尝试过DynamicResource而不是StaticResource