C# TextBox.LineCount始终-1 WPF
我从代码隐藏中创建了一个文本框,如下所示:C# TextBox.LineCount始终-1 WPF,c#,wpf,textbox,C#,Wpf,Textbox,我从代码隐藏中创建了一个文本框,如下所示: TextBox txtPlainTxt = new TextBox(); txtPlainTxt.Height = 200; txtPlainTxt.Width = 300; txtPlainTxt.TextWrapping = TextWrapping.Wrap; txtPlainTxt.Text = text; int lineCount = txtPlainTxt.LineCount; txtPl
TextBox txtPlainTxt = new TextBox();
txtPlainTxt.Height = 200;
txtPlainTxt.Width = 300;
txtPlainTxt.TextWrapping = TextWrapping.Wrap;
txtPlainTxt.Text = text;
int lineCount = txtPlainTxt.LineCount;
txtPlainTxt.Focus();
txtPlainTxt.UpdateLayout();
txtPlainTxt.Focus();
txtPlainTxt.UpdateLayout();
我试图获取文本框的LineCount属性,但问题是它的值总是“-1”。我想这与我从代码隐藏而不是在我的xaml中创建它有关,因为当我在xaml中创建完全相同的文本框时,一切正常,并且我得到了正确的行数。
我尝试调用UpdateLayout()方法,也尝试像这样调用Focus()方法:
TextBox txtPlainTxt = new TextBox();
txtPlainTxt.Height = 200;
txtPlainTxt.Width = 300;
txtPlainTxt.TextWrapping = TextWrapping.Wrap;
txtPlainTxt.Text = text;
int lineCount = txtPlainTxt.LineCount;
txtPlainTxt.Focus();
txtPlainTxt.UpdateLayout();
txtPlainTxt.Focus();
txtPlainTxt.UpdateLayout();
但我仍然得到-1的值。如何解决此问题?这是因为在测量布局之前,您没有
实际高度
和实际宽度
,因此测线计数
在此之前无法计算
这意味着您只能在对布局进行测量和排列后使用LineCount
property
(UpdateLayout()
仅通知布局引擎布局应该更新并立即返回。)
有没有任何理由让您希望在代码隐藏中而不是在XAML中创建它?