如何制作像 PasswordBox 这样的自定义控件,其中密码框左侧会有一个文本块(锁定图标或其他符号)a。也就是说,将密码框和文本块组合成 1 个控件。我可以从中获取密码值。有一个想法让 PasswordBox a ControlTemplate из textblock
a 和 passwordbox`a 但我还需要能够更改 MainWindow.xaml 中的样式
cs:CustomPassBox Style={StaticResource DefaultStyle}>
但是当我像这样设置控件样式时, controlTemplate 消失了。
好吧,看,主要目标是将两个元素合二为一,并添加使用样式的能力。你可以走几种方式。
使用样式:
这里的重点是,我们制作了一些基本样式,在其中重新定义了我们需要的内容并添加了新样式。
例如,我们有这种风格
PasswordBox
:应用后,我们得到以下结果:
现在,假设我们要设置某种样式,例如,对于错误,然后我们创建另一种样式并将其设置为
BaseOn
,它将继承基本样式的所有内容:应用并查看结果:
使用用户控件:
这里的一切都差不多,但也有这样的事情
DependencyProperty
。在它的帮助下,我们可以将非标准属性传递给我们的控件(例如,我们PasswordBox
有一个属性Password
,我们也可以这样做,但假设要覆盖图标),UserControl 也支持样式。让我们创建一些简单的东西:添加具有此样式的 UserControl:
并定义一对 DP:
在这里,例如,我设置了两个 DependencyProperty:
PasswordChanged
事件传递它. 互联网上有很多关于如何解决这个问题的例子,这会很有趣,我想你会发现......现在让我们调用它并查看结果:
让我们为新的 UserControl 创建一个样式,覆盖颜色和图标:
结果:
实际上,这就是我们可以非常简单地使用元素的方式。
祝你学习 WPF 好运!