長々とすみません、すべての情報が含まれていることを確認してください!
次のようにほぼ円形のセルのビュー (対応する 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 の設定に関係なくすべてが左揃えになります。おそらく、空白のセルが追加されるためです。空白のセルを必要な場所に挿入できると仮定していますが、これは表示を正しくするためのデータのファッジのように感じます。これは悪いことに同意するでしょう。
私は何千ものアプローチを試しましたが、これがこれまでのところ最も近いと思いますが、見逃しています。助けていただけますか?
お待ち頂きまして、ありがとうございます。