かなりの要素で構成される構造を作成したいのですが、基本的なレイアウトは次のようになります。
<UniformGrid>
<Border> // This one is 9x
<UniformGrid> // This one is 9x, each as a child of the border
<Border> // This one is again 9x, so at total 9x9 = 81 of these
<TextBox> // Same as above, each one as a child of the Border
.....
</TextBox>
</Border>
</UniformGrid>
</UniformGrid>
したがって、非常に多くのコントロールがあるため、どのソリューションがよりエレガントで適切なのか疑問に思っていました。
1: XAML
そのため、設計全体は XAML で行われます。これはかなりの記述であり、すべてのコントロールは XAML で手動でセットアップされます。
2: C# コード
したがって、メインの UniformGrid と 9 つの小さい Uniform グリッドだけが XAML を使用して作成され、他のすべてのものは動的に作成され、C# で記述されます。また、これが選択される場合は、コード側からボーダーに子を追加する方法を教えてください。今のところ、これが私の主な方法であり、私はそれを思いつきました:
private void InitializeCells()
{
for (int i = 1; i <= 9; i++)
{
object foundControl = sudokuGrid.FindName("cellBorder" + i.ToString());
Border foundGridControl = (Border)foundControl;
for (int j = 1; j <= 9; j++)
{
TextBox cell = new TextBox();
cell.MaxLength = 1;
cell.FontSize = 30;
cell.Name = "cell" + j.ToString();
cell.VerticalContentAlignment = VerticalAlignment.Center;
cell.HorizontalContentAlignment = HorizontalAlignment.Center;
// HOW TO ADD CHILDREN????
}
}
}
private void InitializeCellBorders()
{
for (int i = 1; i <= 9; i++)
{
object foundControl = sudokuGrid.FindName("block" + i.ToString());
UniformGrid foundGridControl = (UniformGrid)foundControl;
for (int j = 1; j <= 9; j++)
{
Border cellBorder = new Border();
cellBorder.Name = "cellBorder" + j.ToString();
cellBorder.BorderBrush = Brushes.DodgerBlue;
foundGridControl.Children.Add(cellBorder);
}
}
}
3: 混合物
C# と XAML コードのある種の異なる混合物ですが、まだ思いつきません:)。