首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >窗口外的WPF管理层

窗口外的WPF管理层
EN

Stack Overflow用户
提问于 2015-12-02 14:23:11
回答 1查看 2.3K关注 0票数 20

我有一个带有textbox控件的WPF窗口。控件有一个装饰器,当文本框有键盘焦点时,该装饰器将变得可见。

正如您在下面的屏幕截图中所看到的,装饰器仅限于窗口的边界。怎样才能使它显示完整的装饰品?

Adorner模板是:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-08 12:22:54

这不可能。AdornerLayer限制在AdornerDecorator的边界上(如果没有定义,Window就有),所以不可能超出装饰者的界限。

您可以使用Popup (定义弹出窗口的MSDN)获得所需的东西,但绝对不使用装饰器。主要的区别是弹出不是窗口的可视树的一部分,所以它不会随着它移动或调整大小。

你也可以定义你自己的弹出窗口,如果你想要的效果在桌面上(就像你正在显示的阴影)。这确实很棘手,但可行。通过大量的工作,您也可以让它与您的窗口一起移动和调整大小(从而模拟一个“窗口外装饰器”),但这肯定不是快速或容易编写的(但是对于普通的Popup,您只需将WindowSizeChangedLocationChanged事件挂钩并相应移动)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34045111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档