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



我开始在UWP应用中使用XAML控件。

我想创建相同控件的几个变体(某种UI库(,这些变体将在应用程序中重复使用,假设一个"大按钮"和一个"小按钮"。

是否有任何绩效问题,缺点或更好的方法来实现"自定义标记"控制个性化?

(我个人发现,一旦设置了每个控件,我就会发现它更容易读取,更容易容易出错。(

非常感谢!


"通用"方式似乎会根据按钮创建样式/模板,例如:

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>

为了可读性和简单性(以自定义为正确的名称空间(,"自定义tagName"方式

mycustombuttons.cs

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

style.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>

是创建自定义控件还是重新模板或重新建立现有的控件完全取决于您的要求。该决定中没有涉及的"绩效问题"。

如果您不打算将任何新的功能添加到控件中,则创建类似的另一个类是没有多大意义的:

public sealed class MyBigButton : Button {}

那么,您不妨创建自定义样式或模板。

请参阅Jerry Nixon的MSDN杂志文章,介绍如何在XAML中创建自定义控件以获取更多信息。

最新更新