我需要在窗体上创建可转动的手柄(单击鼠标,手柄的位置从垂直变为水平,反之亦然)。句柄排列成正方形,就像一个二维 NxN 数组。数字 N 必须是可定制的。我决定创建一个旋转按钮数组。
private Button[,] CreateButtons(int quantity)
{
Button[,] buttons = new Button[quantity, quantity];
for (int i = 0; i < quantity; i++)
{
for (int j = 0; j < quantity; j++)
{
buttons[i, j] = new Button();
buttons[i, j].Width = 50;
buttons[i, j].Height = 20;
buttons[i, j].VerticalAlignment = System.Windows.VerticalAlignment.Top;
buttons[i, j].HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
buttons[i, j].Margin = new Thickness(10);
}
}
return buttons;
}
private void AddToWrapPanel(int quantity, Button[,] buttons)
{
for (int i = 0; i < quantity; i++)
for (int j = 0; j < quantity; j++)
{
wrapPanel.Children.Add(buttons[i, j]);
}
}
private int GetQuantityButtons()
{
ComboBoxItem item = (ComboBoxItem)comboBox1.SelectedItem;
int count = int.Parse((string)item.Content);
return count;
}
private void СreateButton_Click(object sender, RoutedEventArgs e)
{
if (wrapPanel.Children.Count > 0)
wrapPanel.Children.Clear();
int count = GetQuantityButtons();
Button[,] buttons = CreateButtons(count);
AddToWrapPanel(count, buttons);
}
这就是我所拥有的。但问题出在脸上——所有的按钮都排成一排。如何实现矩阵布局?
显然,您需要为此使用更合适的布局工具。例如,将 WrapPanel 替换为 UniformGrid,并将 ComboBox 中的维度绑定(手动设置)到 Rows 和 Columns 的值。