在Visual Studio XAML编辑器中使用不可靠的自动换行 - 2010年是否有任何缓解?

时间:2010-01-08 18:53:19

标签: visual-studio visual-studio-2008 xaml visual-studio-2010

只是好奇XAML编辑器在Visual Studio 2010中自动格式化和包装属性是否更好。

以下是编辑器在VS 2008中自动包装属性的方式:

<StackPanel Grid.Row="0" Grid.ColumnSpan="3">
    <StackPanel Orientation="Horizontal">
        <TextBlock VerticalAlignment="Center" FontWeight="Bold"
Text="Current User:" />
        <ComboBox x:Name="_usersComboBox" Margin="5,0,0,0" Width="200"
ItemsSource="{Binding Users}" SelectedValuePath="Name"
SelectedValue="System Administration">
            <ComboBox.ItemTemplate>
                <DataTemplate>

以下是我希望编辑器自动换行属性的方法:

<StackPanel Grid.Row="0" Grid.ColumnSpan="3">
    <StackPanel Orientation="Horizontal">
        <TextBlock VerticalAlignment="Center" FontWeight="Bold"
            Text="Current User:" />
        <ComboBox x:Name="_usersComboBox" Margin="5,0,0,0" Width="200"
            ItemsSource="{Binding Users}" SelectedValuePath="Name"
            SelectedValue="System Administration">
            <ComboBox.ItemTemplate>
                <DataTemplate>

VS 2010是否符合我的愿望?

3 个答案:

答案 0 :(得分:8)

有一些接近的东西。

VS2010中的新编辑器支持auto-indent自动换行模式。没有办法在产品中激活它,但我们团队的PM写了一个快速扩展,启用该模式。您可以download it from the VS Gallery,或者通过名称搜索(“自动换行”应该足够)从VS2010中的扩展管理器下载它,或者搜索编写扩展名的Brittany Behrens。

答案 1 :(得分:6)

不。你应该打开一个Connect:

https://connect.microsoft.com/VisualStudio/feedback/CreateFeedbackForm.aspx?FeedbackFormConfigurationID=3783&FeedbackType=2

直到SP1才可能成功,但我发现他们对B2周期中的建议非常敏感。你可能会感到惊讶......

答案 2 :(得分:3)

我刚刚在VS 2010建议论坛上提出request后才发现这个问题。

This video(前20秒应该这样做)显示XAML被重新格式化连续,而它是在没有用户干预的情况下编辑的 - XAML在打字时只是'回流',拖放等

我的建议更进一步,因为我提出了全自动的“虚拟格式化”,使用边距而不是制表符/空格,这意味着自动换行总是像文字处理器一样工作。截图示例显示了这一点 - 前导空格字符(带黄色背景)仅存在于xml:space preserve块中:

enter image description here

自动换行和格式化非常复杂 - 屏幕截图中有一些内容:

  1. RTF包含元素或属性内容的悬挂缩进格式,因此包装的文本将有额外的缩进 - 以明确它的包装(请参阅包装的 entation 值和 margin width 属性)

  2. 所有属性彼此对齐

  3. 如果属性值包含换行符,则新行将与第一行对齐。

  4. 保留预先格式化文本中所需的空格,同时保持缩进不变。

  5. [重要]所​​有格式化都是在语法着色的同时完成的,基于XAML上下文中换行符的位置。自动换行就像文字处理器一样,因为换行符中包含缩进数据。

  6. 如果无法对Visual Studio进行此操作,那么我们可能会先在Kaxaml中看到这一点吗?