Visual Studio 2010 XAML Editor неуклюжий IntelliSense? - PullRequest
14 голосов
/ 12 февраля 2011

В текстовом редакторе Visual Studio C #, когда вам нужно свойство, вы просто набираете prop и затем нажимаете вкладку ДВАЖДЫ, чтобы получить «фрагмент» / шаблон для свойства. Тип и имя свойства подсвечиваются. Вы нажимаете tab, когда хотите переключиться между типом и свойством, затем нажимаете Enter, когда вы закончите, и ваш курсор будет прыгать в конце свойства.

В редакторе WPF XAML нажатие «Enter» создаст разрыв строки. Например, если вы введете следующее:

<TextBox x:

и когда вы выбираете свойство «Имя» в IntelliSense, оно дает вам следующее:

<TextBox x:Name="_"

_ представляет ваше текущее местоположение курсора.

Задайте для имени значение, скажем, текстовое поле, а затем нажмите Enter. В этот момент я ожидаю, что мой курсор подпрыгнет в конце, например:

<TextBox x:Name="textbox"_ 

но вместо этого он создает разрыв строки следующим образом:

 <TextBox x:Name="textbox
          _"

Такое поведение меня раздражает. Вместо того, чтобы нажимать Enter, я вместо этого нажимаю клавишу End.

Как мне понять, как я себя веду?

PS: я новичок в WPF и XAML.

Ответы [ 2 ]

8 голосов
/ 05 января 2015

Другим более простым решением является повторное связывание сочетания клавиш для операции Edit.WordNext.

По умолчанию установлено значение Ctrl + стрелка вправо.В Visual Studio перейдите в TOOLS-> Options-> Environment-> Keyboard.

Мне нравится привязывать это к Shift + Space, чтобы мне не приходилось использовать клавиши со стрелками.Когда вы закончите вводить атрибут xaml, а курсор находится с левой стороны от конечной кавычки, нажмите Shift + Пробел, и он переместится к правой стороне знака, чтобы вы могли продолжить ввод остальных атрибутов.,

Намного проще, чем с помощью макроса.

7 голосов
/ 04 апреля 2011

Меня это тоже всегда раздражало. Один из вариантов - создать простой макрос.

  1. Введите тег XAML и назовите его. (В этот момент ваш курсор находится внутри кавычек атрибута.)
  2. Нажмите Ctrl-Shift-R , чтобы начать запись макроса.
  3. Нажмите Конец , а затем Введите . (Теперь ваш курсор находится там, где вы хотите.)
  4. Нажмите Ctrl-Shift-R еще раз, чтобы остановить запись макроса.

Если вы выполните описанные выше шаги, Visual Studio сгенерирует следующий код макроса, который можно увидеть, если нажать Alt-F8 и открыть RecordingModule.Te TempMacro:

DTE.ActiveDocument.Selection.EndOfLine()
DTE.ActiveDocument.Selection.NewLine()

Теперь вы можете запустить этот макрос с помощью Ctrl-Shift-P , но на данный момент это всего лишь временный макрос. Вы должны сохранить его и назначить ему сочетание клавиш.

  1. Открыть Macro Explorer ( Alt-F8 ).
  2. Найти TemporaryMacro под MyMacros | RecordingModule, и переименуйте его. Возможно, даже переместите его из RecordingModule в другой модуль.
  3. Откройте меню «Инструменты» и выберите «Параметры», «Среда», «Клавиатура».
  4. Введите имя вашего макроса в поле «Показать команды, содержащие».
  5. Выберите ваш макрос и назначьте ему сочетание клавиш. (Я выбрал Ctrl-Enter .)

Так что теперь вместо того, чтобы двигать рукой, чтобы нажать Конец , а затем Ввод , вы можете просто нажать Ctrl-Enter .

Я также записал еще один макрос, который перемещается в конец строки и набирает для меня «/>», и прикрепил его к Ctrl - / . Код VS генерирует выглядит следующим образом:

DTE.ActiveDocument.Selection.EndOfLine()
DTE.ActiveDocument.Selection.Text = " />"
DTE.ActiveDocument.Selection.NewLine()

Альтернативой всем этим макросам является отключение автоматических кавычек. Откройте меню «Сервис» и выберите «Параметры», «Текстовый редактор», «XAML», «Разное». Снимите флажок для автоматической вставки кавычек атрибутов. Тогда он не добавит конечную кавычку для вас, и вам не нужно будет использовать клавиши со стрелками или End (хотя вам придется вводить конечную кавычку сейчас конечно).

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