首页 > 解决方案 > 如何在 C#/WPF 中检测 Grid 中的溢出

问题描述

我有一个简单的 Grid 对象,它有一个 Child,它是一个 TextBlock 对象,其中包含一些文本。该网格被插入到画布中。在开始时,WPF 计算网格的宽度和高度,以便 TextBlock 正确地适合它。问题是用户应该并且应该被允许调整网格的大小,这工作得很好。但是减少 Grid 会导致 TextBlock 比 Grid 更大,因此文本不再完全可见。我想问一下 C# 是否为我提供了像 Grid.hasOverlow() 这样的功能,我可以在其中检查内容是否大于父级。

这就是我基本上将 Textblock 添加到网格中的方式。

Grid grid = new Grid();
TextBlock tb = new TextBlock();
tb.Text = "Some Text";
grid.Children.Add(tb);
MyCanvas.Children.Add(grid);

标签: c#wpf

解决方案


我不知道任何 Grid.hasOverflow 类型的函数,但是当您调整大小时,您可能只需要创建一个您的文本对象引用的委托回调。前任。

private delegate void OnGridResized(float newsizeX, float newsizeY);

private OnGridResized Callback;

//Your Function call
if (Callback != null) Callback.Invoke();

然后只需将您的文本调整大小事件订阅到清醒时

Main()
{
Callback += Text.Resize;
}

不知道这是否有帮助,但我希望它对你有用!


推荐阅读