WinUI:使用轻量级样式时如何减少重复代码?
WinUI: How to reduce duplicate code when using lightweight styling?
我正在使用 lightweight styling 设置按钮样式:
<Button ...>
<Button.Resources>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#48B2E9"/>
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="Black"/>
...
</Button.Resources>
</Button>
我想将此样式应用于多个(但不是全部)按钮。
目前我需要将这些 <Button.Resources>
复制并粘贴到我想要设置样式的每个按钮。
有没有办法避免这种重复?
我尝试创建样式,但不知道如何在样式中设置资源。
我想我可以创建一个控件模板,但这似乎很笨拙。
抱歉造成误解
您不能在样式定义上设置资源。
因此您必须将附加的 DependencyProperty 添加到按钮,然后将其设置为样式定义
见this
与其尝试设置 built-in 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>
...并相应地更改 code-behind class 的基数 class:
// MyCustomButton.xaml.cs
public sealed partial class MyCustomButton : Button
{
public MyCustomButton()
{
this.InitializeComponent();
}
}
然后您可以照常在任何其他视图中创建此 Button
的实例,例如:
<local:MyCustomButton Content="Click me!" />
<local:MyCustomButton Content="Another button..." />
我正在使用 lightweight styling 设置按钮样式:
<Button ...>
<Button.Resources>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#48B2E9"/>
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="Black"/>
...
</Button.Resources>
</Button>
我想将此样式应用于多个(但不是全部)按钮。
目前我需要将这些 <Button.Resources>
复制并粘贴到我想要设置样式的每个按钮。
有没有办法避免这种重复?
我尝试创建样式,但不知道如何在样式中设置资源。
我想我可以创建一个控件模板,但这似乎很笨拙。
抱歉造成误解
您不能在样式定义上设置资源。 因此您必须将附加的 DependencyProperty 添加到按钮,然后将其设置为样式定义
见this
与其尝试设置 built-in 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>
...并相应地更改 code-behind class 的基数 class:
// MyCustomButton.xaml.cs
public sealed partial class MyCustomButton : Button
{
public MyCustomButton()
{
this.InitializeComponent();
}
}
然后您可以照常在任何其他视图中创建此 Button
的实例,例如:
<local:MyCustomButton Content="Click me!" />
<local:MyCustomButton Content="Another button..." />