首页 文章

WPF Adorner Layer Outside Window

提问于
浏览
17

我有一个带文本框控件的WPF窗口 . 该控件具有一个装饰器,当文本框具有键盘焦点时,该装饰器可见 .

正如您在下面的屏幕截图中看到的那样,装饰器仅限于窗口的边界 . 如何才能显示完整的装饰?

enter image description here

Adorner模板是:

<DataTemplate x:Key="ContextualInfoDataTemplate">
    <Border 
        Background="#E1E1E1" 
        CornerRadius="6"
        Margin="50,36,0,0">
        <Border.Effect>
            <DropShadowEffect/>
        </Border.Effect>
        <Grid Width="200" Margin="4,3,4,4">
            <TextBlock TextWrapping="Wrap" Text="OverridenAutomationId"/>
        </Grid>
    </Border>
</DataTemplate>

1 回答

  • 6

    这是不可能的 . AdornerLayer 限制在 AdornerDecorator 的范围内( Window 有一个,如果你没有't defined one), so it'只是不可能超出该装饰者的界限 .

    您可以使用定义弹出窗口的 PopupMSDN)获得所需内容,但绝对不使用装饰器 . 主要区别在于弹出窗口不是窗口的一部分's visual tree, so it won' t随之移动或调整大小 .

    如果您想要通过桌面的效果(例如您正在显示的投影),您还可以定义自己的弹出窗口 . 这确实很棘手,但可行 . 通过大量的工作,你可以让它随着你的窗口移动和调整大小(从而模拟"out of window adorner"),但这绝对不会快速或容易编码(对于普通的 Popup ,你可以挂钩你的 WindowSizeChangedLocationChanged 事件并相应地移动)

相关问题