wpf求大神指教DataGrid!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf求大神指教DataGrid!!!相关的知识,希望对你有一定的参考价值。

点击全选下面的会根据一起全选,求解决方法,急,虽然下面会一起全选但是不影响功能!!点击下面上面也会根据一起全选

参考技术A

1.首先在DataGrid列头增加一个CheckBox.

   <DataGrid x:Name="MODataGrid"  AlternationCount="1" >
                <DataGrid.Columns>
                    <DataGridCheckBoxColumn CanUserResize="False" CanUserSort="False" CanUserReorder="False" IsReadOnly="True" Width="24" >
                        <DataGridCheckBoxColumn.HeaderTemplate >
                            <DataTemplate>
                                <CheckBox x:Name="HeaderCB" Click="CheckBox_Click" HorizontalAlignment="Stretch"    VerticalAlignment="Stretch" Tag="Binding Id" Margin="-1,0,0,0"/>
                            </DataTemplate>
                        </DataGridCheckBoxColumn.HeaderTemplate>
                        <DataGridCheckBoxColumn.CellStyle >
                            <Style  >
                                <Setter Property="FrameworkElement.VerticalAlignment"  Value="Center" />
                                <Setter Property="FrameworkElement.HorizontalAlignment"  Value="Center" />
                            </Style>
                        </DataGridCheckBoxColumn.CellStyle>
                    </DataGridCheckBoxColumn>
                </DataGrid.Columns>
     </DataGrid>

2.在上面中注册的Click事件(Click="CheckBox_Click" ),在事件里实现将DataGrid的全选和其它 功能实现:

        //  全选CheckBox事件
        private void CheckBox_Click(object sender, RoutedEventArgs e)
        
            selectedMOList.Clear();//添加所选择的行索引。
            CheckBox headercb = (CheckBox)sender;
            if (headercb.IsChecked == true)
                MOCountLabel.Content = MODataGrid.Items.Count;
            else
                MOCountLabel.Content = 0;

            //将列表中的其它行也勾选或取消勾选
            for (int i = 0; i < MODataGrid.Items.Count - 1; i++)
            
                //获取行  
                DataGridRow neddrow = (DataGridRow)MODataGrid.ItemContainerGenerator.ContainerFromIndex(i);

                //获取该行的某列,即该行单元格
                CheckBox cb = (CheckBox)MODataGrid.Columns[0].GetCellContent(neddrow);
                cb.IsChecked = headercb.IsChecked;//将列头Check状态传递给下面某个checkbox.
                if (headercb.IsChecked == true)
                
                    selectedMOList.Add(i);//将索引添加到List中。
                
            
        

其它CheckBox的勾选可以上面的CheckBox_Click()的方法去实现。

希望能帮到你。

本回答被提问者采纳

Excel如何制作这个WBS分解表格,求大神指教

Excel制作WBS分解表格可以采用创建组的方式实现:

参考技术A Excel做比较麻烦,可能需要配合代码,自带不太可能 参考技术B 你这个截图是用project做的,可以试一下

以上是关于wpf求大神指教DataGrid!!!的主要内容,如果未能解决你的问题,请参考以下文章

DataGrid 行内容垂直对齐

wpf datagrid 样式怎么设置默认选中行的颜色

WPF MVVM模式如何控制DataGrid的列隐藏和显示

wpf datagrid中添加一列checkbox,反复点选,会出现checkbox框偏移,请wpf大神帮忙!

EXT GRID 问题 求 过路大神指教 此问题已 为难小弟良久

求大神指教C语言中的位域