2017-05-15 10 views
0

동적으로 TabItem을 생성합니다. Inside TabItem TextBox를 추가하고 싶습니다.TabItem 내 TextBox 위치 (WPF, C#)

어떻게 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

모든 'FrameworkElement'에는 [Margin'] (https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.margin (v = vs.110) .aspx)이 있습니다. 동적 인 레이아웃 ('Margin'은 여전히 ​​사용되지만'Margin = "5003002010'과 같은 것이 아닙니다)을 사용하기를 원하지만 적절한 부모 컨테이너 (Grid + 컬럼/행 정의, StackPanel, WrapPanel 등) 및 정렬 속성 활용 : VerticalAlignment 및 HorizontalAlignment (예 : [centering] (http://stackoverflow.com/a/1313975/1997232)) – Sinatr

답변

1

Margin 속성을 사용하십시오. 그것은 부모가되어 있는지 또는

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

Canvas 당신이 Canvas.LeftCanvas.Top 속성을 사용할 수 있습니다 :

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

또 다른 대안이 RenderTransform 또는 LayoutTransform을 사용하는 것입니다 및 TranslateTransform 설정의 당신이 TextBox{ X: 20, Y: 35 }에 당신의 위치를 ​​원하는 가정 해 봅시다 이러한 속성으로 :

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

감사합니다. @ m.rogalski! – 4est

+0

분명히 'VerticalAlignment'와'HorizontalAlignment'를 사용하여 위치를 약간 더 동적으로 만듭니다. –