问题:我没有获得具有水平自动换行和垂直自动增长功能的文本框设置。我希望通过编写代码来做到这一点。我编写了以下代码,使用wordwrap在鼠标dblclick上创建一个文本框:
TextBox text2 = new TextBox();
text2.Width = 500;
text2.Visibility = Visibility.Visible;
text2.Focus();
text2.Height = 30;
text2.HorizontalAlignment = HorizontalAlignment.Left;
text2.VerticalAlignment = VerticalAlignment.Top;
Point p = e.GetPosition(LayoutRoot);
text2.Margin = new Thickness(p.X, p.Y, 0, 0);
LayoutRoot.Children.Add(text2);
但是,文本框不会垂直增长。 有人可以建议我用C#中的代码来完成我想要的吗?
答案 0 :(得分:5)
尝试使用此
Grid grid = new Grid();
grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
grid.RowDefinitions.Add(new RowDefinition());
TextBox textBox = new TextBox() { Width = 100, TextWrapping = TextWrapping.Wrap };
textBox.SetValue(Grid.RowProperty, 0);
grid.Children.Add(textBox);
window.Content = grid;
其中window是分配给Window(root)的名称。
答案 1 :(得分:0)
实现您正在寻找的增长的一种方法是使用字符串measuring mechanism,您可以在文本框中的文本发生更改时运行该字符串。只需对内容进行任何更改,即可相应地测量和调整文本框的大小。
答案 2 :(得分:0)
你试过这个吗?
text2.Height = double.NaN; // or don't set the property, but some custom styles might give a default value ..
text2.TextWrapping = TextWrapping.Wrap;
text2.MinHeight = 30; // or not if you want the styles default
而不是
text2.Height = 30;
未设置或使用double.NaN与在xaml中使用“Auto”相同。