gpt4 book ai didi

c# - 我可以在创建时知道 TextBlock 的宽度吗?

转载 作者:行者123 更新时间:2023-11-30 22:36:54 26 4
gpt4 key购买 nike

我像这样在 Canvas 上创建 TextBox:

        TextBlock t = new TextBlock();
t.Foreground = new SolidColorBrush(...);
t.FontSize = 10;
t.HorizontalAlignment = HorizontalAlignment.Left;
t.VerticalAlignment = VerticalAlignment.Top;
t.Text = ...;

Canvas.SetLeft(t, "f(width)");
Canvas.SetTop(t, ...);

canvas.Children.Add(t);

我想知道这个 TextBlock 的宽度,因为左坐标取决于此。我可以做吗?实际宽度为 0。谢谢。

最佳答案

在添加它之前,对其调用 Measure,然后使用 DesiredSize。

编辑: 这样做是可以的,因为 Canvas 不会影响元素放置后的大小。例如,如果您将它添加到具有固定大小行的网格中,这不会为您提供添加后的真实高度,因为添加到网格中会改变它。

正如 Mario Vernari 指出的那样,如果您有真正复杂的定位需求,则很容易覆盖 ArrangeOverride(有时是 MeasureOverride)并创建自定义面板。 Canvas其实就是这样写的,StackPanel等等都是这样写的,都是专门的测量和排列面板,你也可以自己做。

关于c# - 我可以在创建时知道 TextBlock 的宽度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6778918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com