¿Existe una manera fácil de personalizar WPF TabControl para que admita TabItem arrastrar y soltar, similar a lo que hacen IE y Firefox.Reordenar pestañas en WPF TabControl
Respuesta
Puede utilizar o comenzar a usar Bea Stollnitz's ayudantes existentes para Dragging and Dropping in an ItemsControl. Tiene algunas limitaciones, como ella menciona, pero es un gran lugar para comenzar, y probablemente funcionará como lo es para la mayoría de todas las funciones que necesitará.
Después de importar sus clases DragDropHelper y Adorner, es muy simple usarlas con el TabControl (dado que es un descendiente de ItemsControl).
Configurando una plantilla de arrastre simple, y las propiedades en el TabControl son todo lo que necesitamos. Dado que la solución está configurada para manejar el arrastre de elementos vinculados a datos, si sus pestañas están declaradas estáticamente en XAML en lugar de usar TabControl.ItemsSource, entonces puede vincular sus DataContext a sí mismos.
<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>
- 1. ¿Cómo reordenar fácilmente TabControl?
- 2. WPF tabcontrol styling
- 3. TabControl Cancelar cambio de pestañas
- 4. WPF TabControl personalizado
- 5. WPF: Centro TabItems en un TabControl
- 6. pestañas en la parte inferior de TabControl
- 7. WPF TabControl y DataTemplates
- 8. WPF: TabControl & DataTemplates
- 9. WPF multilínea TabControl sin reorganizar filas
- 10. WPF TabControl Databinding
- 11. WPF DataGrid: ¿Reordenar filas?
- 12. En el TabControl de WPF, ¿puedo agregar contenido junto a los encabezados de las pestañas?
- 13. WPF Tabcontrol: efecto deslizante en la selección de elementos de pestañas
- 14. Iconos en TabControl C# - ¿Cómo?
- 15. Pestañas en el lado derecho e izquierdo de TabControl C#
- 16. WPF TabControl Cambiar la pestaña seleccionada
- 17. Estilos WPF para TabControl/TabPanel/TabItem
- 18. ¿Cómo puedo agregar contenido adicional a un WPF TabControl?
- 19. C# WPF Arrastrar para reordenar Listview
- 20. Cómo crear pestañas trapezoidales en el control de pestañas WPF
- 21. WPF ComboBox SelectedItem establecido en nulo en el conmutador TabControl
- 22. Separación de control de pestañas WPF entre los encabezados
- 23. ¿Es posible hacer que el control de pestañas de WinForms pueda hacer el reordenamiento de pestañas como IE o Firefox?
- 24. Tabulaciones de posición de WPF TabControl en la esquina superior derecha
- 25. WPF TabControl - ¿Cómo evitar la descarga en el cambio de pestaña?
- 26. En C# WPF, ¿por qué el evento SelectionChanged de mi TabControl se activa con demasiada frecuencia?
- 27. Cómo reordenar TabPages TabControl de WinForms durante el tiempo de diseño?
- 28. Desactivar accesos directos predeterminados en un TabControl
- 29. WPF TabControl En SelectionChanged, establezca el foco en un campo de texto
- 30. Silverlight TabControl ContentTemplate
Buena respuesta, puede ser que desee actualizar sus enlaces sin embargo. Están muertos. – SilverX
El contenido del blog de Bea Stollnitz está disponible a través de [Wayback Machine] del Internet Archive (https://web.archive.org/web/20120620222921/http://bea.stollnitz.com/blog/?p=53). – Informagic