我有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>
Thumb的模板只是一个用户控件。由于弹出窗口已经打开,因此当我需要向用户显示时,我会对包含的拇指进行动画处理。
问题是,当用户点击拇指将其拖动时,我真的希望能够把它拉到前面,所以它是最顶级的控件 - 就像普通的弹出窗口一样。
我已经实现了leftMouseDown事件(在Thumb的usercontrol模板中),并尝试了以下两种方法(第二个用于查看ANYTHING是否有效)
Canvas.SetZIndex(this, 9999);
Canvas.SetZIndex(VisualTreeHelper.GetOpenPopups().ElementAt(1), 9999);
(我也尝试将Z-Index设置为0 - 尝试将弹出窗口推到底部,再次,看看是否有任何效果)至少没有任何效果。
我也试过这里的东西,也无济于事,但我怀疑这不适用于我,因为我没有ContentPResenter
答案 0 :(得分:2)
再次如果有人搜索到这个,看起来你可以通过重置其IsOpen属性将弹出窗口带到前面。所以只要找出你点击的控件属于哪个弹出窗口,然后只需调用它,弹出窗口将再次显示在上面。
private void FlashPopup(Popup popup) {
popup.IsOpen = false;
popup.IsOpen = true;
}