修改基础控件的样式资源
WinUI 3中,几乎所有与Fluent Design样式的控件,都是通过资源字典(ResourceDictionary
)中的样式(Style
)来指定的。这就为我们自定义控件的样式提供了可能。
更好的消息是在WASDK1.4后的版本里,样式部分已经全面开源了,就在github的microsoft-ui-xaml仓库中。
那么我们应该如何自定义已有控件的样式呢?首先需要打开github的microsoft-ui-xaml仓库进行搜索(如果觉得github搜索慢,也可以克隆下来用本地文本编辑器搜索)。
首先需要找到控件的资源字典,一般格式是形如ControlName_themeresources.xaml
。
如Button
的资源字典是Button_themeresources.xaml
。
也有部分控件的样式混在其他控件样式的文件里,如NavigationViewItem
的样式都在NavigationView_themeresources.xaml
中。
其次找到需要的资源,StaticResource
开头的项一般是按明暗主题整合的多个资源,我们不需要考虑它。
在Style
前面的一片以Thickness
、CornerRadius
、x:Double
、x:String
等开头的则是我们需要覆盖的资源。
找到需要的资源后,修改它的值后复制(不能修改x:Key
否则对不上)将其粘贴在自己的资源字典里。
例如可以直接粘贴在App.xaml
里,也可以粘贴在自己新建的其他资源字典(自己新建的需要添加到Themes/Generic.xaml
里)中,即可实现全局覆盖官方资源。
如果不清楚哪条资源才是自己需要的,可以查看下面模板Style
中的内容来判断。Style
的x:Key
一般是形如ControlNameStyle
的,如ButtonStyle
。
其中Style
有一个特殊的Setter
是Template
,它可以决定整个控件的外观。
如果决定重写整个控件的外观,可以覆盖Style
。
另外由于控件的Style
较长,一般都是为每个控件,新开一个资源字典文件。