2

アプリケーションの外部から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
        }
    }
}
4

1 に答える 1

1

イベントを発生させるには、TabControlでAllowDrop="True"を設定する必要があります

于 2012-12-04T12:57:25.413 に答える