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 中创建自定义控件的文章。
我开始研究 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 中创建自定义控件的文章。