未在装饰元素上接收拖动事件

时间:2009-08-20 18:51:55

标签: c# wpf drag-and-drop

我正在创建一个拖放行为,目标是将一个项目拖到我的网格上,其中一组代表可用操作的装饰元素可供用户放置元素。我的问题是,一旦我将装饰元素添加到AdornerLayer,我就不会收到任何Drag事件。我需要让这些事件改变UI并设置一些底层属性。我在AdornerLayer,装饰元素,ContentPresenter内DataTemplate内部的按钮以及ContentPresenter本身上设置了AllowDrop = true,但仍然没有得到任何事件。

<DataTemplate x:Key="promoMediaTemplate" DataType="{x:Type media:PromoMediaSearchResult}">
<Button Content="{Binding Path=Description}" Name="item" AllowDrop="True" Background="Red" /
<DataTemplate.Triggers>
    <EventTrigger RoutedEvent="Button.PreviewDragEnter">
        <BeginStoryboard x:Name="TextBeginStoryBoard">
            <Storyboard>
                <ColorAnimation 
                    Storyboard.TargetName="item"
                    Storyboard.TargetProperty="Background"
                    Duration="0:0:1.0"
                    From="Red" To="Green" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="Button.PreviewDragLeave">
        <StopStoryboard BeginStoryboardName="TextBeginStoryBoard" />
    </EventTrigger>
    <EventTrigger RoutedEvent="Button.PreviewDrop">
        <StopStoryboard BeginStoryboardName="TextBeginStoryBoard" />
    </EventTrigger>
</DataTemplate.Triggers>