gpt4 book ai didi

c# - 创建具有约束比例的可调整大小的按钮网格控件的最佳方法(Silverlight。XAML,WinRT)

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

用 XAML/C# 编写一个 WinRT 应用程序,我想要一个简单的方形按钮网格。按钮的数量目前是固定的,但将来随着我创建更多内容,会添加更多按钮。

必须处理所有 UI 大小调整(对齐、填充、纵向等)和分辨率我遇到了 UIContainer 的问题(我使用的是 Grid 然后切换了 WrapGrid) 只是自动调整按钮的大小,因为我不知道有什么方法可以限制纵横比,而且方形按钮对我的 UI 很重要。

有没有办法限制按钮控件的宽度和高度的纵横比/比例?如果是这样,我假设它会创建一个自定义控件,但除了创建样式和数据模板之外,我真的超出了我的理解范围。

关于解决这个问题的最佳方法有什么建议吗?

最佳答案

您可以创建一个简单的装饰器控件,它将覆盖 ArrangeOverride 并始终将自身排列成一个正方形,如下所示:

public class SquareDecorator : ContentControl
{
public SquareDecorator()
{
VerticalAlignment = VerticalAlignment.Stretch;
HorizontalAlignment = HorizontalAlignment.Stretch;
VerticalContentAlignment = VerticalAlignment.Stretch;
HorizontalContentAlignment = HorizontalAlignment.Stretch;
}

protected override Size MeasureOverride(Size availableSize)
{
var baseSize = base.MeasureOverride(availableSize);

double sideLength = Math.Max(baseSize.Width, baseSize.Height);

return new Size(sideLength, sideLength);
}

protected override Size ArrangeOverride(Size finalSize)
{
double sideLength = Math.Min(finalSize.Width, finalSize.Height);

var result = base.ArrangeOverride(new Size(sideLength, sideLength));

return result;
}
}

现在你可以用这个装饰器包裹你的按钮了:

<z:SquareDecorator>
<Button Content="I'm Square"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch" />
</z:SquareDecorator>

关于c# - 创建具有约束比例的可调整大小的按钮网格控件的最佳方法(Silverlight。XAML,WinRT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13984898/

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