Нажмите для редактирования в Silverlight - PullRequest
5 голосов
/ 07 мая 2009

Есть ли способ сделать элемент управления «клик для редактирования» в silverlight? У меня есть некоторые предметы, которые будет отображаться в древовидном элементе управления, и я хотел бы, чтобы надписи были редактируемыми непосредственно в древовидной структуре.

Кто-нибудь знает, как это сделать?

1 Ответ

9 голосов
/ 08 мая 2009

Очень просто на самом деле. Я реализовал много форм с таким механизмом обмена.

Вы можете сделать это с помощью конвертера и выполнить простое преобразование BooleanToVisibility для свойства IsEditable, которое существует для сущностей, которые вы привязываете к своему TreeView. Внутри TreeView ItemTemplate просто свяжите TextBlock таким образом, чтобы он свернулся, когда свойство IsEditable имеет значение true, и свяжите TextBox таким образом, чтобы он свернулся, когда свойство IsEditable имеет значение false (и наоборот).

Если вы хотите создать собственный элемент управления ClickToEdit, вам нужно будет сделать следующее:

  1. Создайте класс, который наследуется от ContentControl
  2. Предоставьте новые свойства зависимостей типа DataTemplate: одно называется EditableTemplate.
  3. Добавьте обработчик события MouseLeftButtonUp внутри OnApplyTemplate для прослушивания щелчка.
  4. Измените активный шаблон содержимого на EditableTemplate для события click.
  5. Изменить шаблон обратно, когда элемент управления теряет фокус.

Теперь, чтобы использовать свой собственный элемент управления внутри TreeView:

  1. Переопределите ваш ItemTemplate для TreeView
  2. Поместите туда свой элемент управления ClickToEdit

Реализация пользовательского элемента управления позволит вам (или другим разработчикам) легко указать, какой элемент управления они хотели бы использовать в качестве редактора содержимого. Например, они могли бы указать NumericUpDown или DateTimePicker вместо того, чтобы просто использовать TextBox.

Проверьте DataForm в Silverlight 3. Он имеет схожую функциональность, но переключение между редактируемым и доступным только для чтения щелчком мыши не выполняется.

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