none
WPF中的控件怎么显示在OCX控件的前面? RRS feed

  • 问题

  • 在WPF项目中加入了C++的OCX控件,拖拽TreeViewItem到OCX控件,需要显示拖拽项的内容,在WPF部分没有问题,能够正常显示,但是拖拽到OCX控件上方,由于OCX控件显示在最前面,直接把AdornerLayer遮挡了,请问一下,有没有什么方法可以让AdornerLayer显示在OCX前面?
    2018年11月27日 6:26

答案


  • Hi   Johar7766,

    >>在WPF项目中加入了C++的OCX控件,拖拽TreeViewItem到OCX控件,需要显示拖拽项的内容,在WPF部分没有问题,能够正常显示,但是拖拽到OCX控件上方,由于OCX控件显示在最前面,直接把AdornerLayer遮挡了,请问一下,有没有什么方法可以让AdornerLayer显示在OCX前面?

    据我了解, adorner layer 会一直显示在常规UI图层顶部。 放置在AdornerLayer中的任何内容都会呈现在您设置的任何样式的其余部分之上。

    并且“GetAdornerLayer“ 方法可以从指定的UIElement开始走向可视树,并返回它找到的第一个装饰层。所以你的 AdornerLayer.GetAdornerLayer(mTopLevelGrid)方法需要从最初或者你想要AdornerLayer显示在部分元素之上的父元素中获取。

    你的问题可能是由于你的OCX的控件并不包含在你获取AdornerLayer的AdornerDecorator内部的控件之中。

    所以,你可以尝试下面的方法:

    1: AdornerLayer.GetAdornerLayer获取你需要最顶层元素

    2: 通过AdornerDecorator管理内部控件,将OCX控件放入此标签内。
    <Grid>
      <AdornerDecorator>
       <your datagird control>
       <OCX control />
      </AdornerDecorator>
      
    </Grid>

    AdornerDecorator用于为一组控件提供给定的AdornerLayer


    Best Regards,

    Yong Lu

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Johar7766 2018年12月11日 12:55
    2018年11月28日 3:23
    版主