2015-04-29 23 views
0

我想要在文本块的末尾添加用户名和文本块,用于点击和编辑名称。在WPF中查找包含动态文本的TextBlock的宽度/直角坐标

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

设置了Text属性后,我尝试了宽度(NaN)和ActualWidth(总是为0),但它没有工作(也尝试过UpdateLayout())。

文本左对齐到另一个元素,所以我不能对齐它。

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

+0

我不明白为什么你需要找到坐标,您将得到正确的值。但通常情况下,NaN或0将意味着大小由父容器(依赖项属性)设置 – Joe

+3

我不确定你在做什么,但它听起来像你试图在代码中管理布局。通常这不是最好的方法。 'Orientation = Horizo​​ntal'的'StackPanel'很可能就是您所需要的。 –

回答

1

您可以使用ActualWidth属性来获取TextBlock的宽度。但是在设置Text之后,ActualWidth不会立即更新。一个解决方案是在ActualWidth的是TextBlock中的听的变化,每当它改变

public MainWindow() 
    { 
     InitializeComponent();    
     DependencyPropertyDescriptor.FromProperty(TextBlock.ActualWidthProperty, typeof(TextBlock)) 
      .AddValueChanged(textBlock1, (s, e) => 
     { 
      var yourExpecedWidth = textBlock1.ActualWidth; 
     }); 

    }