我希望有一个带有用户名字的文本块,位于字符串的末尾,是一个用于点击和编辑名称的图像。
由于我无法控制名称的长度,我希望它跟随输入字符串到最后一个字符,我需要计算文本块的宽度或右边界点。
我在设置Text属性后尝试了Width(NaN)和ActualWidth(总是0),但它没有用(尝试过UpdateLayout())。
文本与另一个元素保持对齐,因此我无法正确对齐它。
如何在代码或XAML中使用动态输入文本获取文本块最右边部分的位置?
答案 0 :(得分:1)
您可以使用ActualWidth属性来获取TextBlock的宽度。但是在设置Text之后,ActualWidth将不会立即更新。一种解决方案是监听该TextBlock的ActualWidth上的更改,并且只要它发生更改,您就会得到正确的值
public MainWindow()
{
InitializeComponent();
DependencyPropertyDescriptor.FromProperty(TextBlock.ActualWidthProperty, typeof(TextBlock))
.AddValueChanged(textBlock1, (s, e) =>
{
var yourExpecedWidth = textBlock1.ActualWidth;
});
}