【问题标题】:Visual Studio 2010 XAML Editor awkward IntelliSense?Visual Studio 2010 XAML 编辑器笨拙的 IntelliSense?
【发布时间】:2011-02-12 07:37:06
【问题描述】:

在 Visual Studio C# 文本编辑器中,当您需要一个属性时,您只需键入 prop,然后点击两次选项卡即可获得属性的“sn-p”/模板。类型和属性名称都突出显示。当你想在类型和属性之间切换时按 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 的新手。

【问题讨论】:

  • 您在 C# 中描述的行为适用于代码 sn-ps,但不适用于标准 Intellisense。我一直假设您应该在 XAML 标记中使用箭头键。我很想知道是否有更好的方法。
  • 我希望他们已经修复了这个该死的东西。
  • 同意。这是一个很大的痛苦。

标签: visual-studio-2010 xaml editor intellisense


【解决方案1】:

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

默认设置为 Ctrl+RightArrow。在 Visual Studio 中,转到 TOOLS->Options->Environment->Keyboard。

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

比使用宏容易得多。

【讨论】:

  • 由于 Visual Studio 2013 不支持宏,所以这对我来说效果很好。
【解决方案2】:

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

  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()

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

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

所以现在,您可以直接按 Ctrl-Enter,而不是移动您的手按 End 然后按 Enter

我还录制了另一个宏,它移动到行尾并为我键入“/>”,并将其附加到 Ctrl-/。 VS 生成的代码如下所示:

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

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

【讨论】:

  • 我已经编辑了答案以包含 Visual Studio 生成的宏代码。
  • 只是对未来寻求答案的人的警告,2010 年之后的 Visual Studio 版本不再支持宏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
相关资源
最近更新 更多