在WPF中使用动态文本查找TextBlock的宽度/右侧坐标

时间:2015-04-29 01:38:53

标签: c# wpf

我希望有一个带有用户名字的文本块,位于字符串的末尾,是一个用于点击和编辑名称的图像。

由于我无法控制名称的长度,我希望它跟随输入字符串到最后一个字符,我需要计算文本块的宽度或右边界点。

我在设置Text属性后尝试了Width(NaN)和ActualWidth(总是0),但它没有用(尝试过UpdateLayout())。

文本与另一个元素保持对齐,因此我无法正确对齐它。

如何在代码或XAML中使用动态输入文本获取文本块最右边部分的位置?

1 个答案:

答案 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;
        });

    }