2

如何创建一个Control输入电子邮件地址,类似于捕获标签的stackoverflow工作方式?

我正在使用 C# 和 Xaml。

4

2 回答 2

0

你会需要:

文本框(显示您可以输入的输入区域)

弹出窗口(像 StackOveflow 一样在 TextBox 下方显示建议)

ItemsControl(它进入Popup,所以你可以只收集项目并将它们显示出来,注意ItemsPanel应该可能是GridView)

然后您将需要自定义按钮,一旦添加了标签,它将覆盖在 TextBox 的顶部。您需要计算按钮(宽度)有多大,并用空格填充 TextBox,以进一步推进光标。

您还需要控制正在按下的键。

于 2013-04-03T06:21:58.537 回答
0

您所追求的效果可能是您识别完整的电子邮件地址,并以自定义方式呈现它们。我会通过从文本框中删除完整的地址来做到这一点,并将它们包装在一个皮肤标签中(或者可能是一个带有删除按钮的自定义控件)。

最直接的方法是将文本框实现为一个DockPanel带边框的,暗示它是一个文本框。在您的左侧DockPanel,您有一个StackPanel从左到右堆叠完成的地址控件的位置。然后添加一个文本框DockStyle=Fill来填充DockPanel. 一旦检测到输入了电子邮件地址,就从文本框中删除字符并将匹配的控件添加到StackPanel.

可能有一种方法可以在不失去焦点的情况下更改文本框内容,否则您需要通过代码修复此问题。

祝你好运!

于 2013-04-03T06:37:56.603 回答