2010-11-10 25 views
3

我有4彈出,這樣定義:的Silverlight - 把彈出到前

 <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事件(在大拇指的用戶控件模板),並嘗試以下兩個(第二個看看是否有什麼會工作)

 Canvas.SetZIndex(this, 9999); 

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

(我也嘗試設置將Z-Index設置爲0 - 嘗試將彈出窗口推向底部,再次查看是否有任何內容會起作用)沒有任何結果。

我也試了一下在這裏,也沒有用,但我懷疑這並不適用於我,因爲我沒有ContentPResenter

Bring element forward (Z Index) in Silverlight/WPF

回答

2

另外,即使對於任何搜索這看起來像你可以通過重置它的IsOpen屬性來將彈出窗口帶到前面。因此,只要找出哪個彈出您點擊的控件屬於,然後調用它,彈出窗口就會重新顯示。

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