OK essayez ceci
Définir le ControlTemplate du TabControl comme ceci:
<!-- Sets the look of the Tabcontrol. -->
<Style x:Key="TabControlStyle" TargetType="{x:Type TabControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid>
<!-- Upperrow holds the tabs themselves and lower the content of the tab -->
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
La ligne supérieure de la grille serait le TabPanel mais vous ne le mettre que dans un StackPanel avec un bouton à la suite de la TabPanel, le style, la touche pour ressembler à un onglet
Maintenant le bouton créer une nouvelle TabItem (personnalisé créé un peut-être) et l'ajouter à la ObservableCollection des Onglets que vous avez comme l'Itemssource pour votre TabControl.
1) je pense que je sais ce que tu veux dire mais vous ne savez pas bien, me mettre à jour sur celui-ci
2 & 3) Il doit toujours apparaître à la fin, et ce n'est pas un onglet donc j'espère ne pas faire partie de l'onglet cyclisme
4) votre TabControl doit utiliser une ObservableCollection de TabItems comme Itemssource pour être averti quand un nouveau est ajouté/retiré
Espérons que cette aide.
EDIT: Ajout d'un peu de code
Le NewTabButton usercontrol .cs fichier
public partial class NewTabButton : TabItem
{
public NewTabButton()
{
InitializeComponent();
Header = "+";
}
}
et la fenêtre principale:
public partial class Window1 : Window
{
public ObservableCollection<TabItem> Tabs { get; set; }
public Window1()
{
InitializeComponent();
Tabs = new ObservableCollection<TabItem>();
for (int i = 0; i < 20; i++)
{
TabItem tab = new TabItem();
tab.Header = "TabNumber" + i.ToString();
Tabs.Add(tab);
}
Tabs.Add(new NewTabButton());
theTabs.ItemsSource = Tabs;
}
}
Maintenant, nous devons trouver un moyen de le laisser apparaissent toujours bottme droit et ajouter de l'événement et de style pour elle ( la plus chanter est là comme un espace réservé ).
Je vais prendre un meilleur regard demain.