2010-08-22 8 views
0

Comment puis-je, en C#/WPF, implémenter une application où je peux ouvrir/fermer un nouvel onglet? Je pense que je vais devoir créer un contrôle utilisateur «modèle» et par programmation, créer une nouvelle instance du contrôle (élément d'onglet) et l'ajouter dans le contrôle de tabulation? Je suis nouveau en C#/WPF alors comment puis-je commencer avec cela?Implémenter ouvrir un nouvel onglet

Une autre chose est de savoir comment puis-je modifier ou accéder aux contrôles enfants lorsque je n'ai pas d'ID.

+0

http://stackoverflow.com/questions/3468866/wpf-tabcontrol-add-new-tab-button – NVM

Répondre

2

L'exemple dans ce lien fait plus ou moins exactement ce que vous voulez: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Il est aussi une excellente introduction à MVVM.

+0

J'essaie aussi de commencer avec MVVM, j'ai déjà vu cet article, mais j'ai eu du mal à le démarrer , peut-être que je suis nouveau à C#/WPF. mais tout autre lien MVVM à partager? peut-être des didacticiels vidéo? J'apprends mieux avec des vidéos parfois. –

+0

Je n'ai pas de liens vidéo à portée de main (suggérons de chercher le canal 9) mais je vous recommande de vous concentrer sur un concept à la fois. Au départ, WPF semblerait donner les victoires les plus faciles, et une fois que vous l'aurez compris, essayez à nouveau MVVM. – cristobalito

0

C'est le code que j'ai utilisé.

private void addtabbutton_Click(object sender, RoutedEventArgs e) 
    { 
     // We use tabItem1 and codebox as template<typename T> for the new objects. 
     var tabitem = new System.Windows.Controls.TabItem(); 
     tabitem.ContextMenu = tabItem1.ContextMenu; 
     tabitem.ContextMenuClosing += tabItem1_ContextMenuClosing; 
     tabitem.ContextMenuOpening += tabItem1_ContextMenuOpening; 
     tabitem.Header = "Code" + NewTabItemIndex.ToString(); 
     tabitem.Height = tabItem1.Height; 
     tabitem.Width = tabItem1.Width; 
     tabitem.HorizontalAlignment = tabItem1.HorizontalAlignment; 
     tabitem.VerticalAlignment = tabItem1.VerticalAlignment; 
     tabitem.DataContext = tabItem1.DataContext; 
     var textbox = new System.Windows.Controls.TextBox(); 
     tabitem.Content = textbox; 
     textbox.DataContext = codebox.DataContext; 
     textbox.LayoutTransform = codebox.LayoutTransform; 
     textbox.AcceptsReturn = true; 
     textbox.AcceptsTab = true; 
     textbox.Height = this.codebox.Height; 
     textbox.HorizontalAlignment = codebox.HorizontalAlignment; 
     textbox.VerticalAlignment = codebox.VerticalAlignment; 
     NewTabItemIndex++; 
     this.tabControl1.Items.Add(tabitem); 
    } 

Vous pouvez voir que j'ai démarré avec un élément d'onglet, tabItem1, dans la boîte. Ensuite, je copie essentiellement ses caractéristiques dans un nouveau TabItem. Ensuite, j'ajoute TabItem dans mon TabControl.

1

Vous pouvez le faire très facilement avec ObservableCollections.

XAML

<TabControl ItemsSource="{Binding EmpList }"> 
     <TabControl.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding FirstName }"></TextBlock> 
      </DataTemplate> 
     </TabControl.ItemTemplate> 
    </TabControl> 

code Asumeing vous utilisez MVVM

Créer un EmpList ObservableCollection dans votre ViewModel

donc lorsque vous ajoutez un nouvel objet dans ObservableCollection, contrôle onglet écouter le changement et ajouter un nouvel onglet pour vous.

Questions connexes