设置文本后更新WPF文本框属性

设置文本后更新WPF文本框属性,wpf,textbox,Wpf,Textbox,设置WPF TextBox控件的Text属性时,其他也应更改(作为副作用)的属性不会更改。特别是,我想在设置文本后检查ExtentWidth属性的值,但它不会更改。我尝试调用UpdateLayout()但无效。在Windows.Forms中,我将调用DoEvents() 好的,这里有一些代码。我把它放在Window\u Loaded()事件处理程序中。问题是textBox.Text更改时textBox.extendwidth不会更改。我并不感到惊讶。我想我需要调用textBox.UpdateLa

设置WPF TextBox控件的Text属性时,其他也应更改(作为副作用)的属性不会更改。特别是,我想在设置文本后检查ExtentWidth属性的值,但它不会更改。我尝试调用UpdateLayout()但无效。在Windows.Forms中,我将调用DoEvents()

好的,这里有一些代码。我把它放在Window\u Loaded()事件处理程序中。问题是textBox.Text更改时textBox.extendwidth不会更改。我并不感到惊讶。我想我需要调用textBox.UpdateLayout()之类的函数来重新计算ExtentWidth,但这没有帮助。根据我在窗口的构造函数中将textBox.Text初始化为什么,ExtentWidth确实会有所不同,但这对我没有帮助。我需要设置几个不同的文本值,并为每个值获取相应的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

我找到了一个解决方案,可以在设置文本后更改
TextBox.extendwidth
。设置文本将引发
LayoutUpdated
事件,您可以在
LayoutUpdated
的处理程序中获得
extendwidth
的新值


我使用这个事实创建了WPF
TextBox
的一个子类,当文本对于可见区域来说太长时,它会显示一个省略号。我写了一篇关于它的CodeProject文章。

我找到了一个解决方案,解决了设置文本后让
TextBox.extendwidth
更改的具体问题。设置文本将引发
LayoutUpdated
事件,您可以在
LayoutUpdated
的处理程序中获得
extendwidth
的新值


我使用这个事实创建了WPF
TextBox
的一个子类,当文本对于可见区域来说太长时,它会显示一个省略号。我写了一篇关于它的CodeProject文章。

您得到的值是多少,是0.0吗?请添加一些代码,这样我们就可以看到您看到的内容。ActualWidth为您提供wpf控件的实际宽度。但是一些代码会帮助你:)你在“设置”下是什么意思?从
TextBox
TextChanged
事件?;)导航后在这里。我添加了一些代码来说明我的问题。您得到的值是多少,是0.0吗?请为此添加一些代码,以便我们可以看到您看到的内容。ActualWidth为您提供wpf控件的实际宽度。但是一些代码会帮助你:)你在“设置”下是什么意思?从
TextBox
TextChanged
事件?;)导航后在这里。我添加了一些代码来说明我的问题。