2011-09-30 58 views
2

我有一個網格,其中包含3行,其中之一包含可以編輯的文本框。網格坐落在一個paretn中,該paretn提供拖拽功能以使其能夠在畫布上移動。爲了實現這一點,我需要將IsHitTestVisible設置爲false,以便讓鼠標單擊傳遞給父對象。使命中測試可見屬性不同的網格行

問題是,當我這樣做時,我不能選擇網格中的文本框,即使可見測試可見性設置爲True;

<Grid Background="{StaticResource NodeBackground}" IsHitTestVisible="True"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="2*"/> 
          <RowDefinition Height="1*"/> 
          <RowDefinition Height="2*"/> 
         </Grid.RowDefinitions> 
         <TextBox Text="{Binding Data}" Foreground="White" Background="Transparent" FontFamily="Consolas" FontSize="15" TextAlignment="Center" Grid.Row="1" BorderThickness="0" /> 
        </Grid> 

是否可以設定在每行的基礎命中試驗性質,因此,如果任一兩個空行中被擊中,他們將繼續通過點擊到父容器,但仍然能夠選擇中間行的文本框?

乾杯。

+0

爲什麼你需要'IsHitTestVisible'?藉助[事件冒泡](http://msdn.microsoft.com/en-us/library/ms742806.aspx#routing_strategies),您的網格的父節點將獲取網格中所有未由「文本框」處理的鼠標事件'。我錯過了什麼嗎? –

+0

分享您的拖放邏輯。因爲通常這應該像你期望的那樣工作,就像@ alpha-mouse所說的那樣。 –

回答

0

我不確定您的拖放代碼,但也許您可以使用觸發器,其中IsHitTestVisibleFalse只有在您拖動項目時,其餘時間才爲真。

作爲一個方面說明,我在過去使用WPF的內置DragDrop功能和命中測試有問題。我發現使用MouseEvent更簡單一些,比如跟蹤MouseEnter/MouseLeave事件拖動