gpt4 book ai didi

wpf - 统一网格行和列

转载 作者:行者123 更新时间:2023-12-04 06:52:06 24 4
gpt4 key购买 nike

我正在尝试基于 UniformGrid 制作一个网格来显示每个单元格的坐标,并且我想显示 X 和 Y 轴上的值,如下所示:

   _A_ _B_ _C_ _D_
1 |___|___|___|___|
2 |___|___|___|___|
3 |___|___|___|___|
4 |___|___|___|___|

无论如何,为了做到这一点,我需要知道统一网格中的列数和行数,并且我尝试覆盖排列/绘制发生的 3 种最基本的方法,但其中的列和行数为 0,即使我的网格中有一些控件。我可以覆盖什么方法,以便我的笛卡尔网格知道它有多少列和行?

C#:
public class CartesianGrid : UniformGrid
{
protected override Size MeasureOverride(Size constraint)
{
Size size = base.MeasureOverride(constraint);

int computedColumns = this.Columns; // always 0
int computedRows = this.Rows; // always 0

return size;
}

protected override Size ArrangeOverride(Size arrangeSize)
{
Size size = base.ArrangeOverride(arrangeSize);

int computedColumns = this.Columns; // always 0
int computedRows = this.Rows; // always 0

return size;
}

protected override void OnRender(DrawingContext dc)
{`enter code here`
int computedColumns = this.Columns; // always 0
int computedRows = this.Rows; // always 0

base.OnRender(dc);
}
}

XAML:
<local:CartesianGrid>
<Label Content="Hello" />
<Label Content="Hello" />
<Label Content="Hello" />
<Label Content="Hello" />
<Label Content="Hello" />
<Label Content="Hello" />
</local:CartesianGrid>

任何帮助是极大的赞赏。谢谢!

最佳答案

没有公开的属性(property)可以为您提供该信息。如果您有反射器,您可以在 UpdateComputedValues 中看到它们所做的计算。方法来查找它们使用的行数和列数。

Rows 的情况下, Columns , 和 FirstColumn为零你可以使用这样的东西

int numVisibleChildren = this.Children.Count((c) => c.Visibility != Visibility.Collapsed);
int numColumns = (int)Math.Ceiling(Math.Sqrt(numVisibleChildren));
int numRows = (int)Math.Floor(Math.Sqrt(numVisibleChildren));

我还没有真正运行代码,所以可能有一些错别字。

关于wpf - 统一网格行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961235/

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