Visual Studio 2010 XAML编辑器尴尬的IntelliSense?

Ian*_*Ian 14 intellisense xaml editor visual-studio-2010

在Visual Studio C#文本编辑器中,当您需要属性时,只需键入prop然后单击选项卡TWICE以获取属性的"代码段"/模板.Type和属性名称都会突出显示.如果要在类型和属性之间切换,请按Tab键,然后在完成后按Enter键,光标将跳转到属性的末尾.

在WPF XAML编辑器中,按"Enter"将创建换行符.就像你键入以下内容一样:

<TextBox x:
Run Code Online (Sandbox Code Playgroud)

当您从IntelliSense中选择"名称"属性时,它将为您提供以下内容:

<TextBox x:Name="_"
Run Code Online (Sandbox Code Playgroud)

_表示您当前的光标位置.

给Name一个值,比如文本框,然后按Enter.此时,我希望我的光标像这样跳到最后:

<TextBox x:Name="textbox"_ 
Run Code Online (Sandbox Code Playgroud)

但它会像这样创建一个换行符:

 <TextBox x:Name="textbox
          _"
Run Code Online (Sandbox Code Playgroud)

这种行为让我烦恼.而不是按Enter,而是按下End键.

我如何得到我的预期行为?

PS:我是WPF和XAML的新手.

meg*_*nia 8

另一个更简单的解决方案是重新绑定操作Edit.WordNext的快捷键.

默认情况下,它设置为Ctrl + RightArrow.在visual studio中,转到TOOLS-> Options-> Environment-> Keyboard.

我喜欢将它绑定到Shift + Space,所以我不必使用箭头键.当你完成输入xaml属性并且光标位于结束引号的左侧时,点击Shift + Space并跳转到标记的右侧,这样你就可以继续键入其余的属性.

比使用宏容易得多.


小智 7

那也总是让我恼火.一种选择是创建一个简单的宏.

  1. 输入您的XAML标记并为其命名.(此时光标位于属性的引号内.)
  2. Ctrl-Shift-R开始录制宏.
  3. End,然后Enter.(现在你的光标就在你想要的位置.)
  4. Ctrl-Shift-R再次按可停止微距录制.

如果您按照上述步骤操作,Visual Studio将生成以下宏代码,如果您按下Alt-F8并打开RecordingModule.TemporaryMacro ,您可以看到:

DTE.ActiveDocument.Selection.EndOfLine()
DTE.ActiveDocument.Selection.NewLine()
Run Code Online (Sandbox Code Playgroud)

您现在可以运行此宏Ctrl-Shift-P,但此时它只是一个临时宏.您应该保存它并将其分配给键盘快捷键.

  1. 打开宏资源管理器(Alt-F8).
  2. 在MyMacros下找到TemporaryMacro | RecordingModule,并重命名它.甚至可能将它从RecordingModule移出到另一个模块.
  3. 打开"工具"菜单,转到"选项","环境","键盘".
  4. 在"显示包含的命令"下键入宏的名称.
  5. 选择您的宏并为其指定快捷键.(我选择了Ctrl-Enter.)

所以现在,不要动手按End,然后按Enter,你可以按Ctrl-Enter.

我还记录了另一个移动到行尾的宏,并为我输入"/>",并将其附加到Ctrl-/.代码VS生成如下所示:

DTE.ActiveDocument.Selection.EndOfLine()
DTE.ActiveDocument.Selection.Text = " />"
DTE.ActiveDocument.Selection.NewLine()
Run Code Online (Sandbox Code Playgroud)

所有这些宏的替代方法是关闭自动引号.打开"工具"菜单,然后转到"选项","文本编辑器","XAML","其他".取消选中自动插入属性引号的选项.然后它不会为你添加结束报价,你也不必使用arrow keysEnd键(当然,你现在必须输入结束报价).