2016-04-07 16 views
6

L'articolo seguente mostra come creare schede dinamiche in WPF, che in ogni scheda aggiungerà solo una casella di testo.Come aggiungere il controllo utente nel controllo struttura a schede in WPF

private TabItem AddTabItem() 
{ 
    int count = _tabItems.Count; 

    // create new tab item 
    TabItem tab = new TabItem(); 

    tab.Header = string.Format("Tab {0}", count); 
    tab.Name = string.Format("tab{0}", count); 
    tab.HeaderTemplate = tabDynamic.FindResource("TabHeader") as DataTemplate; 

    tab.MouseDoubleClick += new MouseButtonEventHandler(tab_MouseDoubleClick); 

    // add controls to tab item, this case I added just a textbox 
    TextBox txt = new TextBox(); 

    txt.Name = "txt"; 
    tab.Content = txt; 
    // insert tab item right before the last (+) tab item 
    _tabItems.Insert(count - 1, tab); 

    return tab; 
} 

http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF

cosa posso fare per l'aggiunta di alcuni controlli complessi che le loro posizioni sono fissate invece di scatola appena 1 di testo? posso creare un controllo utente per questo scopo? quindi, come posso aggiungere il controllo utente al controllo struttura a schede?

risposta

3

Prova i prossimi passi:

  1. aggiungere un controllo utente (diciamo in ComplexControl.xaml)

    <UserControl ... > 
        <Grid> 
         <Rectangle Width="100" Height="100" Fill="Red"/> 
        </Grid> 
    </UserControl> 
    
  2. creare una classe

    Public myComplexContolClass 
    { 
        //.... 
    } 
    
  3. mappa insieme così quando visivamente visualizzi un myComplexContolClass nella tua app sarà UserControl 1. La mappa può essere fatto con DataTemplate:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
            ... 
            xmlns:models="clr-namespace: ... .Model" 
            xmlns:views="clr-namespace: ... .View" 
            > 
    
        <DataTemplate DataType="{x:Type models:myComplexContolClass}"> 
         <views:ComplexControl/> 
        </DataTemplate> 
    
    </ResourceDictionary> 
    

O

<Window ... 
      xmlns:models="clr-namespace: ... .Model" 
      xmlns:views="clr-namespace: ... .View" 
      > 

     <Window.Resources> 

      <DataTemplate DataType="{x:Type models:myComplexContolClass}"> 
       <views:ComplexControl/> 
      </DataTemplate> 

     </Window.Resources> 

     // ... 

    </Window> 
  1. aggiungerlo al tuo codice:

    private TabItem AddTabItem() 
    { 
        // ... 
    
        myComplexContolClass control = new myComplexContolClass(); 
        tab.Content = control; 
    
        // ... 
    } 
    
+0

Sì, lo so ma quando li aggiungo al mio xaml fil e, le risorse si aggiungeranno automaticamente. – Elahe

+0

per favore guarda questo file sorgente: http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF Voglio cambiarlo. – Elahe

Problemi correlati