我正在设计一个需要方形的用户控件,并尽可能多地填充给定的空间(为了给出一些上下文,它是一个检查板)。
我的用户控件如下所示:
<Grid>
<!-- My 8 lines / colums, etc. , sized with "1*" to have equal lines -->
</Grid>
现在我只想说“这个网格必须是方形的,无论它必须扩展什么空间”。
徒劳的尝试解决方案:
我不能使用 a
UniformGrid
因为我实际上还有行和列的名称,所以我有一个不同大小的前导标题行和列。如果我使用 a
Viewbox
,Uniform
它就会一团糟。我尝试使用经典
<Grid Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}"> ... </Grid>
但它只有在我手动设置Width
属性时才有效。否则,忽略此约束。
结论
我不知道,我真的很想避免设置Width
/Height
手动,因为这个控件可以在许多不同的地方(ListItem
模板、游戏等)使用。
建议的解决方案:
可以使用一些代码隐藏的解决方案。我没有找到仅适用于 XAML 的解决方案。
网格现在是:
<Grid SizeChanged="Board_FullControlSizeChanged">...</Grid>
事件处理程序是:
private void Board_FullControlSizeChanged(object sender, SizeChangedEventArgs args)
{
double size = Math.min (args.NewSize.Height, args.NewSize.Width);
((Grid)sender).Width = size;
((Grid)sender).Height = size;
}