Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TextBox.LineCount始终-1 WPF_C#_Wpf_Textbox - Fatal编程技术网

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中创建它?