【问题标题】:Position of TextBox inside TabItem (WPF, C#)TabItem 内 TextBox 的位置(WPF,C#)
【发布时间】:2017-05-15 12:11:43
【问题描述】:

我动态创建 TabItems。我想在 TabItem 里面添加 TextBox。

如何设置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);
  }

【问题讨论】:

  • 每个FrameworkElement 都有Margin。虽然考虑使用动态布局(仍然使用Margin,但它不像Margin = "500,300,20,10),那么您需要一个适当的父容器(网格+列/行定义,StackPanel,WrapPanel等)并利用对齐属性:VerticalAlignmentHorizontalAlignment(例如 centering)。

标签: c# wpf position tabcontrol tabitem


【解决方案1】:

使用Margin 属性。假设您想将您的TextBox 定位在{ X: 20, Y: 35 }

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

或者,如果它的父级是 Canvas,您可以使用 Canvas.LeftCanvas.Top 属性:

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

另一种选择是使用RenderTransformLayoutTransform 并将TranslateTransform 设置为这些属性:

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

【讨论】:

  • 显然VerticalAlignmentHorizontalAlignment 使定位更加动态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 2010-12-08
  • 1970-01-01
  • 2015-12-07
  • 2011-09-10
相关资源
最近更新 更多