请原谅长度,试图确保所有信息都包含在内!
我需要一个几乎像这样的圆圈的单元视图(具有相应 VM 的视图):
********
**********
************
**************
**************
**************
**************
************
**********
********
一些并发症:在我们启动之前,我不知道要显示多少个单元格。所有单元格的大小必须相等。整个视图必须是可扩展的。
在我的简化世界中,我的窗口创建了 20 个 RowViewModel 对象,并向每个构造函数传递了它应该创建的列数。
我的主要观点:
<Viewbox Stretch="Uniform">
<ItemsControl ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}},Path=Rows}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding Path=Rows.Count}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Viewbox>
还有我的 RowView:
<Grid>
<ItemsControl ItemsSource="{Binding Columns}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding Columns.Count}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
我的单元格视图:
<Border >
<Viewbox Stretch="Uniform" >
<Label FontSize="10" Content="{Binding Notice}" Foreground="White" />
</Viewbox>
</Border>
就目前而言,所有行的宽度都相同,因此单元格较少的行具有较宽的单元格。如果我告诉每一行有 20 个单元格,每个单元格的大小相同,但尽管设置了 HorizontalAlignment,但所有内容都向左对齐,大概是因为它附加了空白单元格。我假设我可以在我想要的地方插入空白单元格,但这感觉就像是数据的软糖以使显示正确,我相信你会同意这是不好的。
我尝试了无数种方法,并认为这是迄今为止最接近的方法,但我错过了。你能帮忙吗?
谢谢你的耐心。