WPF文本框usercontrol包含自定义项,而不是简单文本

时间:2010-11-18 15:25:05

标签: c# wpf user-controls textbox

我希望有一个基于文本框的自定义用户控件,我可以在其中键入文本(例如名称),然后将名称转换为自定义项目(可以使用X按钮删除它们等)。这就是我想要的:

alt text

我怎样才能做到这一点?我可以用自定义项目替换一段文字吗? 谢谢你的任何想法。

2 个答案:

答案 0 :(得分:1)

您可以通过文本框的changing the control template执行此操作。由于您使用的是Usercontrol(而不是创建自定义控件),所以您真正需要做的就是删除文本框的边框,在用户控件周围添加Border,然后按下按钮+无边框文本框分为DockPanelStackPanel

答案 1 :(得分:1)

将您的Emails绑定在ListView中,并为其提供包含电子邮件和按钮的ItemTemplate。

将每个按钮绑定到删除电子邮件的命令,将电子邮件作为命令参数传递给删除。

将TextBox绑定到属性 - 比如NewEmail。让NewEmail的设置者向Emails的基础集合添加另一封电子邮件,然后通知PropertyChanged NewEmail。 getter应该总是返回一个空字符串。

当您的TextBox更改时(通过失去焦点是默认设置),设置者将向电子邮件添加电子邮件并清除文本框。 Emails应该是返回ObservableCollection<Email>

的属性

这也可以帮助您验证每封新电子邮件是否真实的电子邮件地址。

如果我有时间的话,我会用一些例子来更新;希望这可以帮助你。

修改:如果您想对通过分号添加的新电子邮件做出反应,也可以更改文本框的UpdateSourceTrigger=PropertyChanged。这将导致属性随着文本的每次更改而更新,而不是失去焦点。