拖动选项卡以显示在前面

时间:2012-11-29 12:01:20

标签: .net wpf tabcontrol tabitem

我将数据从我的应用程序外部拖到TabControl上。我希望能够拖动一个“标签”并将该标签放到前面。 TabControl和TabItems上的拖动事件似乎仅针对活动选项卡触发,并且仅在拖动选项卡内容时触发,而不是“选项卡”本身。

Drag to tab

控件的标记是:

<Window
    x:Class="DragOverTabExample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"
    Height="350"
    Width="525">
    <TabControl
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch">
        <TabItem
            Header="Tab A">
            <TextBlock>Tab A</TextBlock>
        </TabItem>
        <TabItem
            Header="Tab B">
            <TextBlock>Tab B</TextBlock>
        </TabItem>
    </TabControl>
</Window>

我已尝试向TabControl和下面的各个TabItems添加行为,附加到DragOver和DragEnter事件,但如上所述,在拖动选项卡本身时似乎没有触发。

namespace Sample
{
    public class ActivateOnDragOverBehaviour : Behavior<TabControl>
    {
        protected override void OnAttached()
        {
            AssociatedObject.DragOver += ActivateTab;
        }

        private void ActivateTab(object sender, DragEventArgs e)
        {
            // Bring hovered tab to front
        }
    }
}

1 个答案:

答案 0 :(得分:1)

你必须在TabControl上设置AllowDrop =“True”才能触发事件