如何创建一个Control
输入电子邮件地址,类似于捕获标签的stackoverflow
工作方式?
我正在使用 C# 和 Xaml。
你会需要:
文本框(显示您可以输入的输入区域)
弹出窗口(像 StackOveflow 一样在 TextBox 下方显示建议)
ItemsControl(它进入Popup,所以你可以只收集项目并将它们显示出来,注意ItemsPanel应该可能是GridView)
然后您将需要自定义按钮,一旦添加了标签,它将覆盖在 TextBox 的顶部。您需要计算按钮(宽度)有多大,并用空格填充 TextBox,以进一步推进光标。
您还需要控制正在按下的键。
您所追求的效果可能是您识别完整的电子邮件地址,并以自定义方式呈现它们。我会通过从文本框中删除完整的地址来做到这一点,并将它们包装在一个皮肤标签中(或者可能是一个带有删除按钮的自定义控件)。
最直接的方法是将文本框实现为一个DockPanel
带边框的,暗示它是一个文本框。在您的左侧DockPanel
,您有一个StackPanel
从左到右堆叠完成的地址控件的位置。然后添加一个文本框DockStyle=Fill
来填充DockPanel
. 一旦检测到输入了电子邮件地址,就从文本框中删除字符并将匹配的控件添加到StackPanel
.
可能有一种方法可以在不失去焦点的情况下更改文本框内容,否则您需要通过代码修复此问题。
祝你好运!