XAML 在 UWP 中:使用继承自定义标记名而不是样式属性

XAML in UWP : Customize tagname instead of Style attribute by using inheritance

我开始研究 UWP 应用程序中的 XAML 控件。

我想为同一个控件(某种 UI 库)创建多个变体,它们将在应用程序中重复使用,比方说 "Big button" 和 "Small button" .

是否有任何性能问题、缺点或实现 "custom tagname" 控件个性化的更好方法?

(我个人认为,一旦每个控件都经过样式化,它的可读性会更高,而且更不容易出错。)

非常感谢!


"common"方式似乎是基于按钮创建样式/模板,像这样:

Styles.xaml (ResourceDictionary)

<Style x:Key="MyBigButtonStyle" TargetType="Button">
    <Setter Property="FontSize" Value="36"/>
</Style>

<Style x:Key="MySmallButtonStyle" TargetType="Button">
    <Setter Property="FontSize" Value="10"/>
</Style>

然后如下声明控件:

MyView.xaml (Page)

<Button Style="{StaticResource MyBigButtonStyle}">My Big Button</Button>
<Button Style="{StaticResource MySmallButtonStyle}">My Small Button</Button>

"custom tagname"方式,为了可读性和简单性(使用自定义作为正确的命名空间用法):

MyCustomButtons.cs

namespace MyApp.MyCustomComponents
{
    public sealed class MyBigButton : Button {}
    public sealed class MySmallButton : Button {}
}

Styles.xaml

<Style Target="custom:MyBigButton">
    <Setter Property="FontSize" Value="36"/>
</Style>
<Style Target="custom:MySmallButton">
    <Setter Property="FontSize" Value="10"/>
</Style>

MyView.xaml

<custom:MyBigButton>My Big Button</custom:MyBigButton>
<custom:MySmallButton>My Small Button</custom:MySmallButton>

是创建自定义控件还是re-template或re-styling现有控件完全取决于您的要求。没有 "performance problems" 参与决策。

如果您不打算向控件添加任何新的功能,那么像这样创建另一个class没有多大意义:

public sealed class MyBigButton : Button {}

那么您不妨简单地创建一个自定义样式或模板。

有关详细信息,请参阅 Jerry Nixon's MSDN Magazine 关于如何在 XAML 中创建自定义控件的文章。