WPF DataGrid控件

一、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:发生于当SelectedItemSelectedItems属性值改变时。

三、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页面

 <DataGrid Grid.Row="5" Grid.ColumnSpan="4" Name="alarmRecordGrid" Background="#479ECFE5" AutoGenerateColumns="False"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;

}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值