我正在寻找创建一个WPF文本框控件,其作用类似于Outlook中的电子邮件收件人文本框(To,Cc和Bcc输入)。我并不一定关心自动完成(我已经找到了数以百万计的例子),但我真正挣扎的是如何在文本框中将分隔的文本条目表现为实体的方式。 Outlook(一旦您输入的收件人解析,该文本将成为您可以单击以选择的'实体',右键单击以获取上下文菜单等。它不再是'纯文本',您可以放置光标) ...
有没有人有任何高层次的想法如何实现这一目标?知道任何现有的例子(我用谷歌搜索了几个小时)?
非常感谢,
迈克尔。
答案 0 :(得分:5)
我的粗略思考过程就是这个......(注意:我实际上并没有对它进行编码,所以我的细节可能会稍微偏离......)。
高级行为:
ItemsControl
(就视觉/ XAML而言,它是ItemsControl
,其中WrapPanel
样式布局,而项目模板非常简单TextBlock
TextBox
因此,思考代码:
DependencyProperty
。在代码隐藏方面,该部分应该非常简单。然后,对于XAML模板...
Items
布局将您的WrapPanel
属性显示为列表。TextBox
。TextBox
上的默认绑定行为只会在TextBox
失去焦点时推送新值,因此您需要考虑是否要进行“输入”按键移动焦点(因此将模板恢复为列表版本 - 当字符串属性的值更改时,您的代码隐藏将更新列表)。这应该给你基本的行为。您应该能够从控件外部绑定列表属性或字符串属性,但是如果绑定两个属性,可能必须要小心,因为它们之间存在双向依赖关系。他们...