2017-05-15 4 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 = "500,300,20,10'のようなものではありません)を使用することを考慮していますが、適切な親コンテナ(Grid +列/行の定義、StackPanel、 WrapPanelなど)と整列プロパティを使用する:VerticalAlignmentとHorizo​​ntalAlignment(例:[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'と' Horizo​​ntalAlignment'を使用して、位置をややダイナミックにします。 –