首页 > 解决方案 > WinUI UWP - 如何创建继承自它的自定义样式?

问题描述

我已经为 WinUI 添加了 nuget 包,并在 App.xaml 中添加了合并的字典,并且所有不受Style指令影响的控件都会出现新样式。然而,简单的使用Style会导致 SetterStyle应用于原始 UWP 模板而不是 WinUI 模板。例如这段代码:

    <Grid.Resources>
        <Style TargetType="ComboBox">
            <Setter Property="Width" Value="160"/>
        </Style>
    </Grid.Resources>

将导致 ComboBoxes 出现没有圆角半径并且比不应用上述内容时具有更厚的边框。

有什么解决办法吗?

标签: xamluwpwinui

解决方案


要覆盖 WinUI 样式的属性,可以使用基于样式

因此,在您的具体情况下,您可以执行以下操作:

<Style TargetType="ComboBox" BasedOn="{StaticResource DefaultComboBoxStyle}">
    <Setter Property="Width" Value="160"/>
</Style>

这样,您将创建一个基于 WinUI 样式(称为 DefaultComboBoxStyle)的新样式,您可以在其中覆盖 width 属性。


推荐阅读