WinUI:如何在使用轻量级样式时减少重复代码



我正在使用轻量级样式来设计按钮的样式:

<Button ...>
<Button.Resources>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#48B2E9"/>
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="Black"/>
...
</Button.Resources>
</Button>

我想将此样式应用于多个(但不是所有(按钮。

目前,我需要将这些<Button.Resources>复制并粘贴到我想要的每个按钮上。

有没有办法避免这种重复?

我尝试创建一个样式,但不知道如何在样式中设置资源。

我想我可以创建一个控制模板,但这似乎很难。

您可以考虑创建一个始终应用资源的自定义Button控件,而不是尝试对内置Button进行样式化

在Visual Studio中,将UserControl添加到项目(项目->添加新项->用户控件(中,并将XAML文件的内容替换为以下内容:

<!-- MyCustomButton.xaml -->
<Button
x:Class="WinUIApp.MyCustomButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Button.Resources>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#48B2E9"/>
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="Black"/>
</Button.Resources>
</Button>

并相应地更改代码隐藏类的基类:

// MyCustomButton.xaml.cs
public sealed partial class MyCustomButton : Button
{
public MyCustomButton()
{
this.InitializeComponent();
}
}

然后,您可以像往常一样在任何其他视图中创建该Button的实例,例如:

<local:MyCustomButton Content="Click me!" />
<local:MyCustomButton Content="Another button..." />

对不起滥用

不能在样式定义上设置资源。所以您必须将附加的DependencyProperty添加到按钮,然后将其设置在样式定义上

看到这个

相关内容

  • 没有找到相关文章

最新更新