2011-02-12 106 views
14

在Visual Studio C#文本編輯器中,當您需要屬性時,只需鍵入prop,然後點擊TWICE選項卡以獲取屬性的「代碼段」/模板。高亮顯示類型和屬性名稱。當您想要在類型和屬性之間切換時按下Tab鍵,然後在完成後按Enter鍵,並且您的光標將在屬性的末尾跳轉。Visual Studio 2010 XAML編輯器尷尬智能感知?

在WPF XAML編輯器中,按下「Enter」將會創建一個換行符。就像如果你鍵入以下內容:

<TextBox x: 

,當你從智能感知選擇「名稱」屬性,它會給你以下幾點:

<TextBox x:Name="_" 

_代表當前光標所在位置。

爲該名稱指定一個值,例如文本框,然後按Enter。在這一點上,我希望我的光標在最後跳,像這樣:

<TextBox x:Name="textbox"_ 

,而是它創建了一個斷行,像這樣:

<TextBox x:Name="textbox 
      _" 

此行爲是討厭我。改爲按Enter,而不是按End鍵。

我如何獲得預期的行爲?

PS:我是WPF和XAML的新手。

+1

您在C#中描述的行爲適用於代碼片段,但不適用於標準的Intellisense。我一直認爲你應該使用XAML標記中的箭頭鍵。我很想知道是否有更好的方法。 –

+1

我希望他們能夠解決這個該死的事情。 –

+0

同意。這是一個主要的痛苦。 –

回答

7

這總是讓我很煩惱。一種選擇是創建一個簡單的宏。

  1. 鍵入您的XAML標籤並命名它。 (此時您的光標位於屬性的引號內。)
  2. Ctrl-Shift-R開始宏錄製。
  3. 結束,然後輸入。 (現在你的光標,你希望它是。)
  4. 按下Ctrl鍵移-R再次停止錄製宏。

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

    您可以:

如果你按照上面的步驟,Visual Studio將有如果你按下Alt鍵-F8和開放RecordingModule.TemporaryMacro生成以下宏代碼,你可以看到現在運行這個宏與Ctrl-Shift-P,但它只是一個暫時的宏。您應該保存它並將其分配給鍵盤快捷鍵。

  1. 打開宏資源管理器(的Alt-F8)。
  2. 在MyMacros下查找TemporaryMacro | RecordingModule,並重命名它。也許甚至可以將它從RecordingModule移出到另一個模塊。
  3. 打開工具菜單並轉到選項,環境,鍵盤。
  4. 在「顯示包含命令」下鍵入您的宏的名稱。
  5. 選擇您的宏併爲其分配快捷鍵。 (我選擇按Ctrl-Enter。)

所以現在,而不是移動你的手按結束然後輸入,則只需按按Ctrl-Enter

我還記錄了另一個宏,它移動到行尾併爲我輸入「/>」,並將其附加到Ctrl-/。 VS生成的代碼看起來是這樣的:

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

的替代所有這些宏是關閉自動報價。打開工具菜單並轉到選項,文本編輯器,XAML,雜項。取消選擇自動插入屬性引號的選項。然後,它不會爲您添加結束語句,您不必使用方向鍵結束鍵(儘管當然您現在必須鍵入結束語引號)。

+0

安德魯,謝謝!你能分享你的宏嗎? – Ian

+1

我編輯了我的答案,以包含由Visual Studio生成的宏代碼。 – Andrew

+0

僅僅是對未來答案搜索者的一個警告,2010年之後的Visual Studio版本放棄了對宏的支持。 – KevenDenen

7

另一個更簡單的解決方案是重新綁定操作Edit.WordNext的快捷鍵。

默認情況下,它被設置爲Ctrl + RightArrow。在Visual Studio中,轉到TOOLS-> Options-> Environment-> Keyboard。

我喜歡將它綁定到Shift + Space,所以我不必使用箭頭鍵。當您輸入完xaml屬性並且光標位於結束引號的左側時,請按Shift +空格鍵並跳轉到標記的右側,以便繼續輸入其餘的屬性。

比使用宏要容易得多。

+0

因爲Visual Studio 2013不支持宏,所以最終對我來說工作非常好。 – KevenDenen