代码之家  ›  专栏  ›  技术社区  ›  Adam Rackis

Silverlight-将弹出窗口置于前面

  •  3
  • Adam Rackis  · 技术社区  · 14 年前

    我有4个弹出窗口,定义如下:

            <Popup x:Name="MyPopup1" IsOpen="True" Margin="0,10,0,0" Grid.Row="0" >
                <Popup.Child>
                    <Thumb x:Name="thumb1" DragDelta="Thumb_DragDelta" Width="0" Height="0" Template="{StaticResource thumbDisplay}" />
                </Popup.Child>
            </Popup>
            <Popup x:Name="MyPopup2" IsOpen="True" Margin="0,20,0,0" Grid.Row="0" >
                <Popup.Child>
                    <Thumb x:Name="thumb2" DragDelta="Thumb_DragDelta" Width="0" Height="0" Template="{StaticResource thumbDisplay}" />
                </Popup.Child>
            </Popup>
    

    问题是,当用户单击拇指拖动它时,我真的希望能够把它放在最前面,所以它是最上面的控件——就像普通弹出窗口一样。

    我已经实现了leftmousedown事件(在thumb的usercontrol模板中),并尝试了以下两种方法(第二种方法查看是否有任何效果)

            Canvas.SetZIndex(this, 9999);
    
            Canvas.SetZIndex(VisualTreeHelper.GetOpenPopups().ElementAt(1), 9999);
    

    (我还尝试将z-index设置为0-尝试将弹出窗口推到底部,再一次,看看是否有任何效果)没有任何效果。

    我也尝试过这里的内容,但也没用,尽管我怀疑这不适用于我,因为我没有内容演示者

    Bring element forward (Z Index) in Silverlight/WPF

    1 回复  |  直到 14 年前
        1
  •  2
  •   Adam Rackis    14 年前

    同样,如果有人搜索这个,您可以通过重置其isopen属性将弹出窗口带到前面。所以,只要找出你点击的控件属于哪个弹出窗口,然后调用它,弹出窗口就会再次位于顶部。

        private void FlashPopup(Popup popup) {
            popup.IsOpen = false;
            popup.IsOpen = true;
        }