2017-05-15 3 views
0

Je crée dynamiquement TabItems. Dans TabItem je veux ajouter TextBox.Position de TextBox à l'intérieur de TabItem (WPF, C#)

Comment puis-je configurer la position de TextBox?

GenerateTabControlModel gtcm = new GenerateTabControlModel();  

for (int x = 0; x <= gtcm.getTabNumber();x++) 
    { 
    TabItem tab = new TabItem(); 
    tab.Header = x.ToString(); 
    tab.Width = 30; 
    tab.Height = 20; 
    string sometext = "tab number: " + x.ToString(); 

    TextBox tb = new TextBox(); 
    tb.Text = sometext;     
    tb.Height = 25; 
    tb.Width = 120; 

    tab.Content = tb;    

    TCDynamo.Items.Add(tab); 
    } 
+0

Chaque 'FrameworkElement' a [' Margin'] (https://msdn.microsoft.com/fr-fr/library/system.windows.frameworkelement.margin (v = vs.110) .aspx). Bien que vous envisagiez d'utiliser la mise en page dynamique ('Margin' est toujours utilisé, mais ce n'est pas quelque chose comme' Margin = "500,300,20,10'), vous avez besoin d'un conteneur parent approprié (Grille + définitions colonne/ligne, StackPanel, WrapPanel, etc.) et en utilisant les propriétés d'alignement: 'VerticalAlignment' et' HorizontalAlignment' (par exemple [centrage] (http://stackoverflow.com/a/1313975/1997232)). – Sinatr

Répondre

1

En utilisant la propriété Margin. Disons que vous voulez positionner votre TextBox à { X: 20, Y: 35 }:

tb.Margin = new Thickness (20, 35, 0, 0); 

Alternativement, si son parent est Canvas vous pouvez utiliser Canvas.Left et Canvas.Top propriétés:

Cavnas.SetLeft(tb, 20); 
Canvas.SetTop(tb, 35); 

Une autre alternative consiste à utiliser RenderTransform ou LayoutTransform et définissez TranslateTransform dans les propriétés suivantes:

tb.RenderTransform = new TranslateTransform(20, 35); 
+0

merci @ m.rogalski! – 4est

+0

Et évidemment 'VerticalAlignment' et' HorizontalAlignment' pour rendre le positionnement légèrement plus dynamique. –