.net - 在 WPF TabControl中,.NET 重新排序选项卡

  显示原文与译文双语对照的内容
127 1

是否有一种简单的方法来自定义,以便它支持ioctl拖放- 类似于 IE 和 Firefox 。

时间:原作者:0个回答

84 3

你可以使用或者开始使用在ItemsControl中拖放和拖放的现有帮助器的它提供了一些限制,但是这是一个很好的开始,并且可以能会对你所需要的大部分功能起作用。

导入DragDropHelper和装饰器类后,很容易将它们与 TabControl ( 因为它是ItemsControl的后代) 一起使用。

只需设置一个简单拖动模板,就可以看到TabControl上的属性。因为解决方案设置为处理绑定数据绑定项,如果你使用XAML静态声明了标签,那么你就可以将它们的DataContext绑定到自己的数据绑定对象。

<Window x:Class="Samples.Window1"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:dd="clr-namespace:DragDropListBox"
 Title="Dragging TabItems"
 Height="300"
 Width="300">
<Window.Resources>
 <DataTemplate x:Key="Local_TabItemDragTemplate">
 <Border CornerRadius="5"
 BorderBrush="Black"
 BorderThickness="2"
 Background="DodgerBlue">
 <TextBlock Margin="5"
 Text="{Binding Path=Header}"/>
 </Border>
 </DataTemplate>
</Window.Resources>
<StackPanel>
 <TabControl dd:DragDropHelper.IsDragSource="true"
 dd:DragDropHelper.IsDropTarget="true"
 dd:DragDropHelper.DragDropTemplate="{StaticResource Local_TabItemDragTemplate}">
 <TabControl.ItemContainerStyle>
 <Style TargetType="{x:Type TabItem}">
 <Setter Property="DataContext"
 Value="{Binding RelativeSource={RelativeSource Self}}"/>
 </Style>
 </TabControl.ItemContainerStyle>
 <TabItem Header="Tab 1"/>
 <TabItem Header="Tab 2"/>
 <TabItem Header="Tab 3"/>
 <TabItem Header="Tab 4"/>
 </TabControl>
 <TabControl dd:DragDropHelper.IsDragSource="true"
 dd:DragDropHelper.IsDropTarget="true"
 dd:DragDropHelper.DragDropTemplate="{StaticResource Local_TabItemDragTemplate}">
 <TabControl.ItemContainerStyle>
 <Style TargetType="{x:Type TabItem}">
 <Setter Property="DataContext"
 Value="{Binding RelativeSource={RelativeSource Self}}"/>
 </Style>
 </TabControl.ItemContainerStyle>
 <TabItem Header="Tab 5"/>
 <TabItem Header="Tab 6"/>
 <TabItem Header="Tab 7"/>
 <TabItem Header="Tab 8"/>
 </TabControl>
</StackPanel>

alt文本 http://i27.tinypic.com/xc7okg.png

原作者:
...