【问题标题】:Can't change Visual Studio adorner z order无法更改 Visual Studio 装饰器 z 顺序
【发布时间】:2011-10-08 03:43:33
【问题描述】:

我正在编写一个 Visual Studio 扩展,它悬停在文本编辑器内的所有内容之上(在选择、文本等之上)。

[Export(typeof(IWpfTextViewCreationListener))]
[ContentType("csharp")]
[TextViewRole(PredefinedTextViewRoles.Interactive)]
internal sealed class MyAdornmentFactory : MyAdornmentFactoryBase, IWpfTextViewCreationListener
{
    [Export(typeof(AdornmentLayerDefinition))]
    [Name("MyName")]
    [Order(After = PredefinedAdornmentLayers.Text, Before = PredefinedAdornmentLayers.Caret)]
    [TextViewRole(PredefinedTextViewRoles.Interactive)]
    public AdornmentLayerDefinition EditorAdornmentLayer;
    // ...
}

问题是,我的 WPF UserControl 总是“隐藏”在文本后面 - 无论我如何使用 OrderAttribute。

我做错了吗?还有其他因素会影响这种行为吗?

编辑:我现在可以确认它〜有时〜工作,可能连接到运行而无需调试......有人知道相关的视觉工作室错误吗?

【问题讨论】:

    标签: wpf visual-studio-2010 adornment


    【解决方案1】:

    它应该可以工作,或者对我来说更好的是以您的确切方式设置顺序。 例如,如果您从名为 TextAdornment 的每一行中突出显示“A”的模板开始(与 vs2010 SDK 一起提供)并更改 zorder from

    [Order(After=PredefinedAdornmentLayers.Selection, Before=PredefinedAdornmentLayers.Text)]
    

    [Order(After=PredefinedAdornmentLayers.Text, Before=PredefinedAdornmentLayers.Caret)]
    

    装饰将放置在编辑器文本上。 希望有帮助。

    【讨论】:

    • 正如我在编辑中提到的那样,我知道它应该可以工作,而且我已经看到它可以工作 - 问题是有时它不会,如果我不更改这些行中的任何内容。我希望找到一些其他可能改变这种行为的“东西”(代码、配置、错误等)。
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2015-02-05
    • 2020-05-19
    • 2021-09-15
    相关资源
    最近更新 更多