Как расположить строку меню над TextBox в Silverlight? - PullRequest
1 голос
/ 05 февраля 2011

Я хочу добавить меню в элемент управления TextBox в Silverlight 4. (Я создам новый элемент управления многократного использования.) Меню будет состоять из нескольких кнопок изображений. Идея состоит в том, что он обычно остается скрытым и отображается только тогда, когда пользователь помещает курсор мыши в область TextBox. Если используется многострочное текстовое поле, то внутри него может поместиться целая строка меню, это должно быть легко. (Надеюсь.: -))

Но как решить ситуацию, когда TextBox находится в однострочном режиме? Я хотел бы поместить строку меню над TextBox. Но я понятия не имею, как это сделать. Может кто-нибудь помочь? Мне нужно оставить все остальные элементы управления в форме, чтобы они оставались на своих позициях, и добавить только мою строку меню над моим текстовым полем. (Таким образом, меню не будет скрывать текстовое поле. Вместо этого оно будет скрывать другие элементы управления, находящиеся прямо над текстовым полем.) Оно должно работать во всех форматах, таких как Grid, StackPanel, Canvas и т. Д. Фактически это будет похоже на классическое контекстное меню, вызываемое правой кнопкой мыши, но не модальное. (Контекстное меню, вызываемое правой кнопкой мыши, является модальным, то есть, когда оно отображается, вы не можете использовать другие элементы управления, и оно автоматически скрывается, когда вы щелкаете в другом месте. Я хочу, чтобы моя строка меню оставалась видимой, пока пользователь нажимает курсор мыши над текстовым полем или строкой меню .)

Пример: координаты текстового поля: top = 100, left = 20, bottom = 115, right = 120. Таким образом, координаты моего меню должны быть снизу = 100, слева = 20, вправо и вверху основаны на размере меню.

Если на одной странице будет использоваться много текстовых полей, каждая из них должна иметь свою собственную строку меню. (Конечно.)

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

Кодирование не требуется, если вы используете это меню:

http://sl4popupmenu.codeplex.com

Чтобы добиться этого, вам нужно установить для свойства IsPinned значение true.

0 голосов
/ 05 февраля 2011

Вы можете создать свой собственный элемент управления (пользовательский элемент управления или UserControl, в зависимости от того, что вам нравится, должен работать), который имеет TextBox и визуальный элемент для строки меню.

Если TextBox однострочный, вы можете отобразить строку меню в Popup, который вы поместите чуть выше TextBox, когда мышь находится над ним.

Если TextBox является многострочным, вы просто используете StackPanel или Grid или что-то еще, чтобы сделать макет как обычно, если я понимаю, что вы хотите.

...