根据行数,列数自动创建表格,使用WPF中的Grid很容易实现,并且容易实现单元格的合并拆分。主要需要解决两个问题:
- 单元格的定位,那一行,那一列,占几行,占几列
- 单元格的边框
行,列,占行,占列
该问题比较容易解决,Grid分行,分列后,添加的控件可以使用Grid.Row,Grid.Column,Grid.RowSpan,Grid.ColumnSpan解决。
单元格边框
每一个单元格使用一个Border,控制上下左右的边框达到显示单元格边框,具体如下图:
需要注意的是,最终表格的每个单元格中是包含其它控件的,如textbox,该控件的最小高度若是22,则对于首行来说,其高度应该是22+2=24,对于其它行来说,高度应该是22+1=23,即需要包含边框,同理,列宽有时也需要注意,实践中发现列宽基本不影响,所以可不调节。
最后实现的图示:
相关代码:
后台代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
var rowct = int.Parse(tbRow.Text);
var colct = int.Parse(tbCol.Text);
InitRowDefAndColDef(gd, rowct, colct);
InitGridCell(gd);
}
private void InitRowDefAndColDef(Grid grid, int rowct, int colct)
{
for (