WPF Grid + DataGrid多表头 动态列实现
来源:互联网 发布:linux php sqlsrv扩展 编辑:程序博客网 时间:2024/06/01 10:29
使用了Grid + DataGrid 显示
Grid部分(表头部分)用了GridSplitter作为列的区分,可以调节列宽,(未实现自动排序)
DataGrid部分,隐藏DataGrid的Header部分
界面部分:
<Grid> <Grid.RowDefinitions> <RowDefinition Height="63"></RowDefinition> <RowDefinition Height ="*"></RowDefinition> </Grid.RowDefinitions> <Grid Grid.Row="0" x:Name ="GridHs" ShowGridLines="False" Height ="63" VerticalAlignment ="Top"> </Grid> <DataGrid Grid.Row="1" x:Name ="DataGridHs" HeadersVisibility="None" ItemsSource="{Binding}" DisplayMemberPath="Data" Height ="400" CanUserAddRows =" False" VerticalAlignment="Top" AutoGenerateColumns="False" ></DataGrid> </Grid> </Grid>public MainWindow() { InitializeComponent(); BuildDG2(); BuildDG21(); }public ObservableCollection<ObservableCollection<string>> datas2 = new ObservableCollection<ObservableCollection<string>>(); void BuildDG2() { for (int i = 0; i < 4; i++) { ColumnDefinition column1 = new ColumnDefinition(); column1.Width = GridLength.Auto; this.GridHs.ColumnDefinitions.Add(column1); ColumnDefinition column = new ColumnDefinition(); column.Width = new GridLength(1); this.GridHs.ColumnDefinitions.Add(column); } for (int i = 0; i < 3; i++) { this.GridHs.RowDefinitions.Add(new RowDefinition()); RowDefinition column = new RowDefinition(); column.Height = new GridLength(1); this.GridHs.RowDefinitions.Add(column); } for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { if (i == 0 && j == 2) { continue; } UniformGrid gridTitle = new UniformGrid(); Border b = new Border(); b.VerticalAlignment = VerticalAlignment.Stretch; b.HorizontalAlignment = HorizontalAlignment.Stretch; b.Name = "Grid" + i + j; Pen p = new Pen(); b.BorderBrush = new SolidColorBrush(Colors.Green); b.BorderThickness = new System.Windows.Thickness(2); TextBlock tbxTitleChinese = new TextBlock(); b.Child = tbxTitleChinese; tbxTitleChinese.Text = "语文" + i + j; tbxTitleChinese.Width = 60; tbxTitleChinese.Height = 20; gridTitle.Children.Add(b); gridTitle.SetValue(Grid.RowProperty, i*2); gridTitle.SetValue(Grid.ColumnProperty, j*2); this.GridHs.Children.Add(gridTitle); if (i == 0 && j == 1) { Grid.SetColumnSpan(gridTitle,3); b.Width = 100; } if (i==2) { Binding bd = new Binding(); bd.Path = new System.Windows.PropertyPath("Width"); bd.ElementName = @"行" + i; BindingOperations.SetBinding(gridTitle, WidthProperty, bd); } } } for (int i = 0; i < 4; i++) { GridSplitter gSp = new GridSplitter(); gSp.Background = new SolidColorBrush(Colors.Green); gSp.HorizontalAlignment = HorizontalAlignment.Stretch; gSp.Width = 1; if (i == 1) { gSp.SetValue(Grid.RowProperty, 1); } else { gSp.SetValue(Grid.RowProperty, 0); } gSp.SetValue(Grid.ColumnProperty, i * 2 + 1); this.GridHs.Children.Add(gSp); Grid.SetRowSpan(gSp, 6); } } void BuildDG21() { for (int i = 0; i < 10; i++) { ObservableCollection<string> columnsList = new ObservableCollection<string>(); for (int j = 0; j < 4; j++) { columnsList.Add((i + j + 3).ToString()); } datas2.Add(columnsList); } for (int i = 0; i < 4; i++) { DataGridTextColumn dgColumn = new DataGridTextColumn(); dgColumn.Header = @"行" + i; dgColumn.SetValue(NameProperty, @"行" + i); this.DataGridHs.Columns.Add(dgColumn); MultiBinding mbd = new MultiBinding(); Binding bd1 = new Binding("[" + i + "]"); Binding bd2 = new Binding(); bd2.Path = new System.Windows.PropertyPath("ActualWidth"); bd2.Source = LogicalTreeHelper.FindLogicalNode(this.GridHs,"Grid2" + i); dgColumn.Binding = bd1; BindingOperations.SetBinding(dgColumn, DataGridTextColumn.WidthProperty, bd2); } this.DataGridHs.DataContext = datas2; }
阅读全文
0 0
- WPF Grid + DataGrid多表头 动态列实现
- WPF Grid + DataGrid多表头 动态列实现
- WPF DataGrid 多表头
- wpf datagrid 实现渐变表头
- ExtJs 实现动态列,动态多表头
- ExtJs 实现动态列,动态多表头
- 扩展DataGrid控件,能够实现多列排序,自定义标题,动态增加表头等
- ExtJS5 - 实现多表头Grid
- WPF-DataGrid后台动态生成列
- 合并实现DataGrid多表头
- 合并实现DataGrid多表头
- 合并实现DataGrid多表头
- Flex DataGrid多表头实现
- Flex DataGrid多表头实现
- 重画具有动态生成列的datagrid表头
- Ext Grid 报表锁定列+多表头的设计与实现(一)
- Ext Grid 锁定列+多表头的设计与实现(二)
- Siverlight DataGrid动态表头
- 干货 | AI 工程师必读,从实践的角度解析一名合格的AI工程师是怎样炼成的
- 【重磅】AI击败顶级德扑玩家的秘密!德扑AI创造者现身reddit,全面解答34个提问,详解Libratus的现状和未来
- Ubuntu14.04 ROS自带opencv2.4.8和opencv3.1多版本共存
- Unity学习(1)——角色移动
- 12/19 python的高级特性
- WPF Grid + DataGrid多表头 动态列实现
- struts 不走action 原因找了好久。。。。
- Spring中@CrossOrigin的作用
- location.hash用法
- 大话MVP架构模式(1)-Basic
- BZOJ[1693][Usaco2007 Demo]Asteroids 网络流
- Hadoop二次排序及MapReduce处理流程实例详解
- AJax同步和异步
- C++学习笔记1209