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

时间:2011-02-12 07:37:07

标签: visual-studio-2010 xaml editor intellisense

在Visual Studio C#文本编辑器中,当您需要属性时,只需键入prop,然后点击选项卡TWICE以获取属性的“代码段”/模板。 Type和属性名称都会突出显示。如果要在类型和属性之间切换,请按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 个答案:

答案 0 :(得分:8)

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

默认设置为Ctrl + RightArrow。在visual studio中,转到TOOLS-&gt; Options-&gt; Environment-&gt; Keyboard。

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

比使用宏容易得多。

答案 1 :(得分:7)

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

  1. 输入您的XAML标记并为其命名。 (此时光标位于属性的引号内。)
  2. Ctrl-Shift-R 开始进行宏录制。
  3. 结束,然后按输入。 (现在你的光标就在你想要的位置。)
  4. 再次按 Ctrl-Shift-R 停止宏录制。
  5. 如果按照上述步骤操作,Visual Studio将生成以下宏代码,如果按 Alt-F8 并打开RecordingModule.TemporaryMacro,则可以看到:

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

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

    1. 打开宏资源管理器( Alt-F8 )。
    2. 在MyMacros下查找TemporaryMacro | RecordingModule,并重命名它。甚至可能将它从RecordingModule移到另一个模块。
    3. 打开“工具”菜单,然后转到“选项”,“环境”,“键盘”。
    4. 在“显示包含的命令”下键入宏的名称。
    5. 选择您的宏并为其指定快捷键。 (我选择 Ctrl-Enter 。)
    6. 现在,不要移动你的手按结束然后输入,你只需按 Ctrl-Enter

      我还记录了另一个移动到行尾的宏,并输入“/&gt;”对我来说,并附加到 Ctrl - / 。代码VS生成如下所示:

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

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