用XAML / C#编写WinRT应用程序,我想要一个简单的正方形按钮网格.目前,按钮的数量是固定的,但是随着我创建更多内容,将来还会添加更多按钮.
不得不处理所有UI调整大小(快照,填充,纵向等)和分辨率时,我遇到了UIContainer的问题(我使用了Grid,然后切换了WrapGrid),只是简单地自动调整了按钮的大小,因为我不知道有什么方法可以限制纵横比和方形按钮对我的用户界面很重要.
有没有办法约束按钮控件的纵横比/宽度和高度的比例?如果是这样,我假设将要创建一个自定义控件,但是除了创建样式和数据模板之外,我真的超出了我的理解范围.
解决方法:
您可以创建一个简单的装饰器控件,该控件将覆盖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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。