我有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的用户控件模板中),并尝试了以下两种方法(第二种方法是为了查看是否有任何效果)。
Canvas.SetZIndex(this, 9999);
Canvas.SetZIndex(VisualTreeHelper.GetOpenPopups().ElementAt(1), 9999);
我也尝试将Z-Index设置为0,试图将弹出窗口推到底部,只是为了看看是否有用。但是一点作用都没有。
我还尝试了这里的方法,但也没有用,虽然我怀疑这与我无关,因为我没有ContentPresenter元素。
参考链接:Bring element forward (Z Index) in Silverlight/WPF