アプリケーションの外部からTabControlにデータをドラッグしています。「タブ」の上にドラッグして、そのタブを前面に表示できるようにしたいと思います。TabControlとTabItemsのドラッグイベントは、アクティブなタブに対してのみ発生し、「タブ」自体ではなく、タブコンテンツ上をドラッグしたときにのみ発生するようです。
コントロールのマークアップは次のとおりです。
<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
}
}
}