一、wpf- DataGrid 四种列及其数据类型

DataGridTextColumn               (string)

DataGridCheckBoxColumn    (Boolean)

DataGridComboBoxColumn    (Enum)

DataGridHyperlinkColumn         (Uri)

二、wpf- DataGrid 常用属性和事件

组件所在命名空间:

System.Windows.Controls

组件常用属性:

AlternatingRowBackground:获取或设置一个笔刷用来描绘DataGrid奇数行的背景。

AreRowDetailsFrozen:获取或设置一个值用来判断是否冻结每行内容的详细信息。

AreRowGroupHeadersFrozen:获取或设置一个值用来判断是否冻结分组行的头部。

AutoGenerateColumns:获取或设置一个值用来判断是否允许自动生成表列。

CanUserReorderColumns:获取或设置一个值用来判断是否允许用户重新排列表列的位置。

CanUserSortColumns:获取或设置一个值用来判断是否允许用户按列对表中内容进行排序。

CellStyle:获取或设置单元格的样式。

ColumnHeaderHeight:获取或设置列头的高度。

ColumnHeaderStyle:获取或设置列头的样式。

Columns:获取组件中包含所有列的集合。

ColumnWidth:获取或设置列宽。

CurrentColumn:获取或设置包含当前单元格的列。

CurrentItem:获取包含当前单元格且与行绑定的数据项。

DragIndicatorStyle:获取或设置当拖曳列头时的样式。

DropLocationIndicatorStyle:获取或设置呈现列头时的样式。

FrozenColumnCount:获取或设置冻结列的个数。

GridLinesVisibility:获取或设置网格线的显示形式。

HeadersVisibility:获取或设置行头及列头的显示形式。

HorizontalGridLinesBrush:获取或设置水平网格线的笔刷。

HorizontalScrollBarVisibility:获取或设置水平滚动条的显示样式。

IsReadOnly:获取或设置DataGrid是否为只读。

MaxColumnWidth:获取或设置DataGrid的最大列宽。

MinColumnWidth:获取或设置DataGrid的最小列宽。

RowBackground:获取或设置用于填充行背景的笔刷。

RowDetailsTemplate:获取或设置被用于显示行详细部分的内容的模板。

RowDetailsVisibilityMode:获取或设置一个值用以判定行详细部分是否显示。

RowGroupHeaderStyles:获取呈现行分组头部的样式。

RowHeaderStyle:获取或设置呈现行头的样式。

RowHeaderWidth:获取或设置行头的宽度。

RowHeight:获取或设置每行的高度。

RowStyle:获取或设置呈现行时的样式。

SelectedIndex:获取或设置当前选中部分的索引值。

SelectedItem:获取或设置与当前被选中行绑定的数据项。

SelectedItems:获取与当前被选中的各行绑定的数据项们的列表(List)。

SelectionMode:获取或设置DataGrid的选取模式。

VerticalGridLinesBrush:获取或设置垂直网格线的笔刷。

VerticalScrollBarVisibility:获取或设置垂直滚动条的显示样式。

 

组件常用方法:

BeginEdit:使DataGrid进入编辑状态。

CancelEdit:取消DataGrid的编辑状态。

CollapseRowGroup:闭合DataGrid的行分组。

CommitEdit:确认DataGrid的编辑完成。

ExpandRowGroup:展开DataGrid的行分组。

GetGroupFromItem:从具体Item中得到分组。

ScrollIntoView:滚动DataGrid视图。

组件常用事件:

BeginningEdit:发生于一个单元格或行进入编辑模式之前。

CellEditEnded:发生于一个单元格编辑已被确认或取消。

CellEditEnding:发生于一个单元格正在结束编辑时。

CurrentCellChanged:发生于一个单元格成为当前单元格时。

PreparingCellForEdit:发生于在DataGridTemplateColumn下的单元格进入编辑模式时。

SelectionChanged:发生于当SelectedItem或SelectedItems属性值改变时。

三、wpf- DataGrid 基础列子

 

<Grid> 

<DataGrid x:Name="dataGrid" ItemsSource="{Binding}"   AutoGenerateColumns="False">
<DataGrid.Columns>

 <DataGridTextColumn Header="Name" Width="80" Binding="{Binding Name}"/>           
DataGridTextColumn Header="Age" Width="50" Binding="{Binding Age}"/>
 <DataGridComboBoxColumn Width="80" Header="Sex"    SelectedItemBinding="{Binding Sex}"   
ItemsSource="{Binding Source={StaticResource sexEnum}}"/>
 <DataGridHyperlinkColumn Header="Email" Width="150"    Binding="{Binding Email}"/>
 
 
DataGrid.Columns>  
 </DataGrid>
</Grid>



四、wpf- DataGrid 常遇问题

2.WPF中 DataGrid 最后多出一行,一列怎么去掉?

CanUserAddRows设置为false,不让它做自动插入行的操作

<DataGrid AutoGenerateColumns="False"   CanUserAddRows="False"  
IsReadOnly="False" ></DataGrid>

3.自定义表头(表头带边框,文字居中)

<Style TargetType="DataGridColumnHeader">
            <Setter Property="SnapsToDevicePixels" Value="True" />
            <Setter Property="MinWidth" Value="0" />
            <Setter Property="MinHeight" Value="28" />
            <Setter Property="Foreground" Value="#323433" />
            <Setter Property="FontSize" Value="14" />
            <Setter Property="Cursor" Value="Hand" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="DataGridColumnHeader">
                        <Border x:Name="BackgroundBorder" BorderThickness="1,1,1,1"
 BorderBrush="Wheat" Background="LightGray"
 Width="Auto">
                            <Grid >
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <ContentPresenter  Margin="0,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                <Path x:Name="SortArrow" Visibility="Collapsed" Data="M0,0 L1,0 0.5,1 z" Stretch="Fill"  Grid.Column="2" Width="8" Height="6" Fill="White" Margin="0,0,50,0"
 VerticalAlignment="Center" RenderTransformOrigin="1,1" />
                                <Rectangle Width="1" Fill="#d6c79b" HorizontalAlignment="Right" Grid.ColumnSpan="1" />
                                <!--<TextBlock  Background="Red">
                            <ContentPresenter></ContentPresenter></TextBlock>-->
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Height" Value="25"/>
        </Style>

四.WPF DataGrid自动生成行号





xmal页面

LoadingRow="dataGrid_LoadingRow">
             <DataGrid.Columns>
                 <DataGridTextColumn Header="所属局" Width="100" Binding="{Binding Path=BureauName}"/>
                 <DataGridTextColumn Header="网元类型" Width="100" Binding="{Binding Path=NetElementTypeName}"/>
                 <DataGridTextColumn Header="模块号" Width="100" Binding="{Binding Path=ModuleNo}"/>
                 <DataGridTextColumn Header="报警等级" Width="100" Binding="{Binding Path=AlarmLevelsName}"/>
                 <DataGridTextColumn Header="报警类型" Width="100" Binding="{Binding Path=AlarmTypeName}"/>
                 <DataGridTextColumn Header="报警名称" Width="150" Binding="{Binding Path=AlarmName}"/>
                 <DataGridTextColumn Header="详细内容" Width="*" Binding="{Binding Path=DetailedContents}"/>
                 <DataGridTextColumn Header="报警发生时间" Width="150" Binding="{Binding Path=GenerationTime}"/>
             </DataGrid.Columns>
         </DataGrid>

private void dataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.Header = e.Row.GetIndex() + 1;
}