2011-09-30 11 views
2

グリッドが3行あり、そのうちの1行には編集可能なTextBoxが含まれています。グリッドは、キャンバスの周りを動かすためのドラッグ機能を提供するパレットの中に座っています。これを有効にするには、マウスのクリックを親オブジェクトに渡すために、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> 

は、それがいずれかの2つの空行がヒットしたかのように、彼らは親コンテナ上にクリックを渡すために引き続き、まだことができるだろう、行ごとにヒットテストプロパティを設定することが可能です中央の行のテキストボックスを選択するには?

乾杯。

+0

なぜIsHitTestVisibleが必要ですか? [イベントバブリング](http://msdn.microsoft.com/en-us/library/ms742806.aspx#routing_strategies)のおかげで、あなたのグリッドの親は、グリッドのすべてのマウスイベントを取得します。グリッドのマウスイベントは、 'TextBox '。何か不足していますか? –

+0

ドラッグドロップロジックを共有します。これは通常、@ alpha-mouseと同じように動作するはずです。 –

答えて

0

私はあなたのドラッグ・ドロップ・コードを特定していませんが、おそらくトリガーを使うことができます。IsHitTestVisibleFalseです。アイテムをドラッグしている場合のみ、残りの時間はTrueです。

私は過去にWPFの組み込みのDragDrop機能とヒットテストを使用して問題を抱えていました。私はドラッグのためのMouseEnter/MouseLeaveイベントのようなMouseEventsを使用するほうがはるかに簡単です。

関連する問題