代码之家  ›  专栏  ›  技术社区  ›  dariusriggins

不接收装饰元素上的拖动事件

  •  0
  • dariusriggins  · 技术社区  · 17 年前

    我正在创建一个拖放行为,目标是将一个项目拖到我的网格上,其中一组表示可用操作的装饰元素将可供用户拖放该元素。我的问题是,一旦我将装饰元素添加到AdornerLayer,我就不会收到任何拖动事件。我需要让这些事件同时改变UI和设置一些底层属性。我在AdornerLayer、装饰元素、ContentPresenter内的DataTemplate内的my按钮以及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>