WPF

2016-04-07 25 views
6

'da sekme denetiminde kullanıcı denetimi nasıl eklenir Aşağıdaki makale, WPF'de dinamik sekmelerin nasıl oluşturulacağını gösterir; her sekmede yalnızca bir metin kutusu eklenir.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

Onların pozisyonları sadece 1 metin kutusu yerine monte edilecek bir bazı karmaşık kontroller eklemek için ne yapabilirim? Bu amaç için bir kullanıcı kontrolü oluşturabilir miyim? Peki kullanıcı kontrolünü sekme kontrolüne nasıl ekleyebilirim?

cevap

3

deneyin sonraki adımlar:

  1. bir kullanıcı denetimi ekleyin

    Public myComplexContolClass 
    { 
        //.... 
    } 
    
  2. onları bir araya Harita

    <UserControl ... > 
        <Grid> 
         <Rectangle Width="100" Height="100" Fill="Red"/> 
        </Grid> 
    </UserControl> 
    
  3. bir sınıf oluşturun (ComplexControl.xaml içinde düşünelim) Bu yüzden uygulamanızda bir myComplexContolClass varsa, o zamandan itibaren UserControl olacaktır 1. haritası DataTemplate ile yapılabilir:

    <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> 
    

Ya

<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. Kodunuza ekleyin:

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

Evet biliyorum ama bunları xaml filime eklediğimde e, kaynaklar otomatik olarak ekleyecektir. – Elahe

+0

lütfen şu kaynak dosyasına bakın: http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF Bunu değiştirmek istiyorum. – Elahe