仅针对TabItem的选项卡
本文关键字:选项 TabItem | 更新日期: 2023-09-27 18:15:45
问题:
我正在创建一个拖放界面,允许移动选项卡内的项目,以及从一个选项卡到另一个选项卡。现在我有下面的Style
,它允许我在TabItem
中瞄准Label
。由于与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>
最终的答案比预期的要简单。我只需要将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;