WPF combobox добавить товар - PullRequest
0 голосов
/ 05 мая 2011

В Access 2010 (и других?), Если вы назначаете «форму редактирования элементов списка» для комбинированного окна, при открытии комбинированного окна появляется полупрозрачный значок редактирования, который можно щелкнуть и открыть форму добавлять / редактировать элементы в источнике данных поля со списком. Кто-нибудь знает, можно ли это повторить в WPF / Xaml и если да, то как? Это выглядит очень гладко и намного лучше, чем кнопка рядом со списком, как я это делаю в настоящее время (я нашел много примеров того, как добавить элемент вверху списка, но это не так). что я после

Большое спасибо
Кев Т

1 Ответ

0 голосов
/ 05 мая 2011

Не думаю, что это полный ответ, но у меня есть некоторые идеи. Я пытался все обдумать, но, возможно, есть вещи, которые не совсем верны или могут быть сделаны лучше.

Создайте новый класс, который наследуется от ComboBox; давайте назовем это EditableComboBox. Дайте ему TemplatePart типа Button с именем PART_EditButton. Также добавьте свойство зависимости в EditableComboBox объекта типа; давайте назовем это EditorContent. (Это будет содержимое всплывающего диалога.)

Переопределите OnApplyTemplate, чтобы получить ссылку на кнопку (используя GetTemplateChild) и присоединить обработчик события к событию Click кнопки. Когда происходит событие Click, создайте и покажите дочернее окно и установите для его свойства Content значение EditorContent. Установите для его свойства DataContext значение DataContext из EditableComboBox.

Используйте Blend для создания копии шаблона ControlTemplate для кнопки по умолчанию; давайте назовем это MyButtonControlTemplate. Измените непрозрачность кнопки на значение, меньшее 1, и добавьте раскадровку в MouseOver VisualState, которая устанавливает непрозрачность в 1.

Используйте Blend для создания копии ControlTemplate по умолчанию для ComboBox; давайте назовем это EditableComboBoxTemplate. Видите всплывающий узел? Добавьте еще одну прозрачную строку в ее дочернюю сетку и добавьте в эту строку кнопку с именем PART_EditButton. Установите для шаблона кнопки значение MyButtonControlTemplate. Затем создайте стиль по умолчанию для EditableComboBox, который устанавливает для шаблона значение EditableComboBoxTemplate.

При использовании EditableComboBox, установите для его свойства EditorContent что-то, что может редактировать элементы, возможно, Grid, содержащий ListBox, связанный с тем же ItemSource, что и EditableComboBox.

Надеюсь, это хотя бы несколько полезно. Я хотел бы предоставить пример кода, но, к сожалению, на данный момент у меня недостаточно времени. Это интересный вопрос, поэтому я постараюсь проверить позже, чтобы выяснить, дал ли кто-то еще вам лучшую идею и / или ответить на дополнительные вопросы, которые могут у вас возникнуть.

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