我需要在Form上显示一个网格,显示为32个32个单元格,每个单元格都可以单击以执行某些操作(如Windows日历应用程序)。我认为按钮和面板,但这将是1024控制。有更好的方法吗?
答案 0 :(得分:0)
这是在WPF中使用按钮创建响应式网格的方法:
使用GridLength(1, GridUnitType.Star)
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
for (int x = 0; x < 32; x++)
{
buttonGrid.ColumnDefinitions.Add(new ColumnDefinition
{
Width = new GridLength(1, GridUnitType.Star)
});
buttonGrid.RowDefinitions.Add(new RowDefinition
{
Height = new GridLength(1, GridUnitType.Star)
});
for (int y = 0; y < 32; y++)
{
var bt = new Button();
bt.Content = x + "" + y;
Grid.SetRow(bt, x);
Grid.SetColumn(bt, y);
buttonGrid.Children.Add(bt);
bt.Click += Bt_Click;
}
}
}
private void Bt_Click(object sender, RoutedEventArgs e)
{
Button bt = (Button)sender;
bt.Background = Brushes.Black;
}
}
<强> MainWindow.xaml 强>
<Grid Name="buttonGrid"></Grid>
请注意调整大小会很慢。