我希望有一个基于文本框的自定义用户控件,我可以在其中键入文本(例如名称),然后将名称转换为自定义项目(可以使用X按钮删除它们等)。这就是我想要的:
我怎样才能做到这一点?我可以用自定义项目替换一段文字吗? 谢谢你的任何想法。
答案 0 :(得分:1)
您可以通过文本框的changing the control template执行此操作。由于您使用的是Usercontrol
(而不是创建自定义控件),所以您真正需要做的就是删除文本框的边框,在用户控件周围添加Border
,然后按下按钮+无边框文本框分为DockPanel
或StackPanel
。
答案 1 :(得分:1)
将您的Emails
绑定在ListView中,并为其提供包含电子邮件和按钮的ItemTemplate。
将每个按钮绑定到删除电子邮件的命令,将电子邮件作为命令参数传递给删除。
将TextBox绑定到属性 - 比如NewEmail
。让NewEmail
的设置者向Emails
的基础集合添加另一封电子邮件,然后通知PropertyChanged
NewEmail
。 getter应该总是返回一个空字符串。
当您的TextBox更改时(通过失去焦点是默认设置),设置者将向电子邮件添加电子邮件并清除文本框。 Emails
应该是返回ObservableCollection<Email>
这也可以帮助您验证每封新电子邮件是否真实的电子邮件地址。
如果我有时间的话,我会用一些例子来更新;希望这可以帮助你。 修改:如果您想对通过分号添加的新电子邮件做出反应,也可以更改文本框的UpdateSourceTrigger=PropertyChanged
。这将导致属性随着文本的每次更改而更新,而不是失去焦点。