我正在创建自定义控件。突然面临一个问题:为什么要将控制风格与控制分开? 我的意思是使用标准方法你必须:从基本控件派生(例如,从TextBox)并在general.xaml中为它添加样式。 但为什么我们不能这样做:
<TextBox x:Class="CustomTest.CoolTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBox.Style>
<Style>
<Setter Property="TextBox.FontSize" Value="20" />
</Style>
</TextBox.Style>
</TextBox>
代码隐藏:
public partial class CoolTextBox : TextBox
{
public CoolTextBox()
{
InitializeComponent();
}
}
更新#1
我不是在编写自己的库,而是在主可执行文件中创建自定义控件。应用支持主题,但它们只有颜色不同。所以每个主题都是一组画笔资源,我的风格将使用 DynamicResource 引用它们。
我想知道的是该解决方案的缺点。我的意思是性能,使用简单等等。
答案 0 :(得分:1)
WPF允许在运行时更改主题,意味着样式应与控件分开存储。此外,控件在设计时应该是无形的,以便其他程序员可以拥有自定义样式,但某些地方应该有一个默认样式,必须分别存储在Generic.xaml文件中。如果您的应用不支持更改主题,则可以根据需要定义样式。
如果您正在编写自定义控件库,我建议您坚持使用标准。
以下是如何创建自定义控件的链接:
答案 1 :(得分:0)
除了 dev hedgehog 关于性能的答案之外,我发现了以下缺点: