//处理表尾部分 public void UpdateTail() { Grid g = (Grid)TailTemplate.LoadContent(); _tailRow = g.RowDefinitions.Count; UpdateTemplate(); }
//生成表尾部分 private void UpdateTableTail() { //把原来产生的单元格清除掉 foreach (FrameworkElement ui in _tailElements) { grid.Children.Remove(ui); } _tailElements.Clear(); int i1 = 0; //把单元格插入表格中,行号及列号添加头及左部所占单元格 foreach (object header in TableHeaderItems) { Grid ui = (Grid)TailTemplate.LoadContent(); //每个单元格的数据上下文一样,插入特殊的数据实体 DataObjectsView view = new DataObjectsView() { Col = header, Objects = TableBodyItems }; //表体模板由多个单元格组成 List <UIElement> cells = new List <UIElement>(ui.Children); ui.Children.Clear(); foreach (FrameworkElement cell in cells) { cell.DataContext = view; //用边框把内容框起来 Border b = new Border(); b.Child = cell; b.BorderThickness = new Thickness(1, 1, 1, 1); b.BorderBrush = new SolidColorBrush(Colors.Black); //单元格所在行为 整个头部所占行 + 表左部所占行 Grid.SetRow(b, Grid.GetRow(cell) + _headRow + _row); //单元格所占列为 整个左边所占列 + 单元格列号 * 每个单元格列总数 Grid.SetColumn(b, Grid.GetColumn(cell) + _leftCol + i1 * ui.ColumnDefinitions.Count); Grid.SetRowSpan(b, Grid.GetRowSpan(ui)); Grid.SetColumnSpan(b, Grid.GetColumnSpan(ui)); grid.Children.Add(b); _bodyElements.Add(b); } i1++; } }