0

OnDragEnterWPF Datagrid のすべてのセルにイベントが必要です。私はこれを試しました:

<ControlTemplate TargetType="{x:Type my:DataGridCell}" x:Key="RowTemplate">
    <ContentPresenter DragEnter="ContentPresenter_DragEnter" >
    </ContentPresenter>
</ControlTemplate>

しかし、うまくいかないようです。アイデアはありますか?


編集:回答ありがとうございます。別の問題に直面していることに気付きました: 私の本当の問題は、TextBoxコントロールが常にドラッグ アンド ドロップ イベントを処理済みとしてマークするため、AllowDrop を設定AllowDrop="True"しても、AllowDrop が機能していないように見えることでした。これはバグではなく、実際にはこの動作は設計によるものです。

私はプレビュー イベントを使用してこれを予測し、D'n'D イベントを処理できるようにしました。

<TextBox
    AllowDrop="True"
    PreviewDragEnter="TextBox_PreviewDragOver" 
    PreviewDragOver="TextBox_PreviewDragOver"  
    PreviewDrop="TextBox_PreviewDrop">
<TextBox/>

お役に立てれば。
最初の質問に関しては正確だったので、回答としてマークします。

4

2 に答える 2

2

あなたは近くにいます。

を設定する必要があり、イベント ハンドラを設定するレベル以下AllowDropに設定する必要があります。例えば:

<ControlTemplate TargetType="{x:Type my:DataGridCell}" x:Key="RowTemplate"> 
  <ContentPresenter DragEnter="ContentPresenter_DragEnter" AllowDrop="true"> 
  </ContentPresenter> 
</ControlTemplate>

ドラッグ/ドロップ イベントは、 を持つ にのみ送信さUIElementsれますAllowDrop="true"。そこから、処理されるまでツリーを泡立てます。

各セルではなくセル自体にDragEnterハンドラーを追加できることに注意してください。ただし、どのセルがドロップ ターゲットであるかに関する情報が必要な場合は、セル レベルで設定する必要があります。DataGridAllowDrop="true"

于 2010-03-13T18:13:47.430 に答える
1

セルで AllowDrop プロパティを true に設定する必要があると確信しています。これを true に設定しないと、要素はドラッグ/ドロップ イベントに参加しません。

于 2010-03-12T22:57:47.327 に答える