【问题标题】:Visual Studio: Is there XAML snippets support?Visual Studio:是否支持 XAML 片段?
【发布时间】:2012-04-26 20:41:36
【问题描述】:

有没有办法在 Visual Studio 2010 中为 XAML 编辑器添加 XAML sn-ps?例如,我想免于打字,并有这样的东西:

sn-p: gr<TAB>

生成代码:

<Grid>
    <Grid.RowDefinitions>

    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>

    </Grid.ColumnDefinitions>
</Grid>

然后如果我输入例如:rd&lt;TAB&gt; 它应该生成&lt;RowDefinition /&gt;

同样,cd&lt;TAB&gt; 应该生成 &lt;ColumnDefinition /&gt;

对于其他 XAML 元素也是如此。

我想你明白了...关键是使这些 sn-ps 仅在 Visual Studio 的 XAML 编辑器中可用。将它们放在 Visual Studio 内的其他代码编辑器中(例如,在编辑 .cs 文件时)没有意义。

【问题讨论】:

  • 今天下午,我使用 JetBrains Resharper 创建了一些 XAML sn-ps(用于 Grid.ColumnDefinitions)。显然,这不是您问题的答案,因为我不知道您是否拥有 Resharper 许可证。

标签: wpf silverlight xaml editor code-snippets


【解决方案1】:

如果你不需要参数,那么你可以使用工具箱!

只需将代码拖到工具箱中,然后将其插入到您想要的任何位置。这适用于 C# 以及 XAML。

发件人:http://blog.wpfwonderland.com/2012/04/16/xaml-snippets-and-visual-studio/

【讨论】:

  • wpfwonderland.com 主机服务器崩溃,XAML sn-ps 文章不见了。
【解决方案2】:

它适用于 VS 2019。 使用指南:Creating Code Snippets

例如,插入:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <Tag Grid.Row="0" Grid.Column="0" />
</Grid>

Tag 是每次插入 sn-p 时要设置的可编辑值,请使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <SnippetTypes>
      <SnippetType>Expansion</SnippetType>
    </SnippetTypes>
    <Title>Grid Default</Title>
    <Description>Grid With Default Rows and Columns</Description>
    <HelpUrl>
    </HelpUrl>
    <Shortcut>griddef</Shortcut>
  </Header>
  <Snippet>
    <Declarations>
      <Literal Editable="true">
        <ID>TagName</ID>
        <ToolTip>Tag Name</ToolTip>
        <Default>TextBlock</Default>
      </Literal>
    </Declarations>

    <Code Language="xaml">
      <![CDATA[
      <Grid>
          <Grid.RowDefinitions>
              <RowDefinition Height="Auto"/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
              <ColumnDefinition Width="Auto"/>
          </Grid.ColumnDefinitions>

          <$TagName$ Grid.Row="0" Grid.Column="0" />
      </Grid>
      $selected$$end$]]>
    </Code>
  </Snippet>
</CodeSnippet>

这个文件可以保存在扩展名为.snippet的任何地方,然后使用sn-ps管理器(Tools | Code Snippets Manager...将文件导入到IntelliSense使用的标准位置(不要忘记选择XAML类型)。你也可以直接在最终位置创建文件(在下面的 sn-p 管理器对话框中可见)以保存导入步骤。

快捷方式可能不会出现在 IntelliSense 中(这是我的情况,原因我还不清楚),但输入 griddef TabTab 将插入模板.

根据您的具体需求,替换CDATA 元素中的代码,并更改Shortcut 元素中的值。您也可以删除此部分:

<Declarations>
  <Literal Editable="true">
    <ID>TagName</ID>
    <ToolTip>Tag Name</ToolTip>
    <Default>TextBlock</Default>
  </Literal>
</Declarations>

如果您不需要任何可编辑的值,或者根据开头提到的指南进行调整。

【讨论】:

    【解决方案3】:

    no built in support,但是有一个扩展提供something similar to this

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2023-01-02
      • 2010-09-17
      • 2011-10-05
      • 2014-06-18
      相关资源
      最近更新 更多