【发布时间】:2011-12-16 04:12:48
【问题描述】:
在设置 WPF TextBox 控件的 Text 属性时,其他应该更改的属性(作为副作用)不会更改。特别是我想在设置Text后检查ExtentWidth属性的值,但它没有改变。我试过调用 UpdateLayout() 无济于事。在 Windows.Forms 中,我会调用 DoEvents()。
好的,这里有一些代码。我把它放在 Window_Loaded() 事件处理程序中。问题是 textBox.ExtentWidth 在 textBox.Text 更改时不会更改。这并不让我感到惊讶。我想我需要调用类似 textBox.UpdateLayout() 的方法来重新计算 ExtentWidth,但这并没有帮助。 ExtentWidth 确实取决于我在窗口的构造函数中初始化 textBox.Text 的内容,但这对我没有帮助。我需要设置几个不同的 Text 值并为每个值获取相应的 ExtentWidth。
string initText = textBox.Text; // "textBox"
double extentWidth = textBox.ExtentWidth; // 39.3
textBox.Text = "short text";
extentWidth = textBox.ExtentWidth; // 39.3
textBox.Text = "Long enough to make a difference, eh?";
extentWidth = textBox.ExtentWidth; // 39.3
【问题讨论】:
-
你得到的值是多少,是0.0吗?
-
请在此处添加一些代码,以便我们看到您正在查看的内容。
-
ActualWidth 为您提供 wpf 控件的实际宽度。但是一些代码会帮助你:)
-
“设置”是什么意思?从
TextBox或TextChanged事件导航后? ;) -
在这里操作。我添加了一些代码来说明我的问题。