Пользовательский контроль текстового поля WPF, содержащий пользовательские элементы, а не простой текст - PullRequest
1 голос
/ 18 ноября 2010

Я хотел бы иметь пользовательский пользовательский контроль на основе текстового поля, в котором я мог бы вводить текст (например, имена), а затем имена были бы преобразованы в пользовательские элементы (которые имели бы кнопку X для их удаления и т. Д.).Вот что я хотел бы:

alt text

Как мне этого добиться?Могу ли я заменить часть текста пользовательским элементом?Спасибо за любые идеи.

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Свяжите свои Emails в ListView и дайте им ItemTemplate с электронной почтой и кнопкой.

Свяжите каждую кнопку с Командой, которая удаляет электронное письмо, передавая электронное письмо для удаления в качестве параметра команды.

Свяжите свой TextBox со свойством - скажем NewEmail. Сделайте так, чтобы установщик NewEmail добавил еще одно электронное письмо в базовую коллекцию Emails, затем уведомите PropertyChanged о NewEmail. Получатель всегда должен возвращать пустую строку.

Когда ваш TextBox изменяется (по умолчанию теряется фокус), установщик добавит электронное письмо в электронную почту и очистит текстовое поле. Emails должно быть свойством, которое возвращает ObservableCollection<Email>

Это также позволит вам проверять, является ли каждое новое письмо реальным адресом электронной почты.

Я обновлю некоторые примеры, если у меня будет время; надеюсь, что это поможет вам в то же время.

Редактировать: Вы также можете изменить текстовое поле UpdateSourceTrigger=PropertyChanged, если хотите реагировать на новые электронные письма, добавляемые, скажем, через точку с запятой. Это приведет к обновлению свойства при каждом изменении текста, а не к потере фокуса.

1 голос
/ 18 ноября 2010

Вы можете сделать это, изменив шаблон управления текстового поля. Поскольку вы используете Usercontrol (а не создаете пользовательский элемент управления), все, что вам действительно нужно сделать, - это удалить границу текстового поля, добавить Border вокруг вашего пользовательского элемента управления и поместить текстовое поле кнопки + без полей в DockPanel или StackPanel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...