仅定位TabItem的选项卡

时间:2014-07-31 14:23:13

标签: c# wpf drag-and-drop tabcontrol

问题:

我正在创建一个拖放界面,允许在标签内以及从一个标签移动到另一个标签。现在我有以下Style,允许我定位Label内的TabItem。由于与ResourceDictionary发生冲突,我希望通过后面的代码添加Event。问题是,如果我将Event添加到TabItem,那么它不仅会触发选项卡本身,还会触发选项卡的内容。

问题:

我如何在后面的代码中为事件连接?

<Style
    x:Key="DragDropTi"
    BasedOn="{StaticResource {x:Type TabItem}}"
    TargetType="TabItem"> 
    <Setter
        Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate>
                <Label
                    Foreground="White"
                    Content="{Binding}">
                    <Label.Style>
                        <Style
                            TargetType="Label">
                            <EventSetter
                                Event="Drop"
                                Handler="TabItemDrop" />
                            <Setter
                                Property="AllowDrop"
                                Value="True" />
                        </Style>
                    </Label.Style>
                </Label>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 个答案:

答案 0 :(得分:0)

答案最终比预期的要容易。我只需将MenuItem.Header设置为Label而不是名称字符串,并将Event附加到Label

Label header = new Label();
header.Content = "Tab Name";
header.AllowDrop = true;
header.Drop += new DragEventHandler(TabItemDrop);

TabItem tabItem = new TabItem();
tabItem.Header = header;