datagrid设置样式

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:assembly="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <!--注意clr-namespace是中间的杠-->
   <!--public ResourceDictionary Resources { get; set; }-->
        <Window.Resources>
        <ObjectDataProvider x:Key="sex1" MethodName="GetValues" ObjectType="{x:Type assembly:Enum}">
            <ObjectDataProvider.MethodParameters >
                <x:Type Type="local:sex"/>
                <!--这里竟然不给智能提示-->
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
      
    <Grid>
        <Grid.RowDefinitions >
            <RowDefinition Height="25"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <DataGrid x:Name="datagrid" AutoGenerateColumns="False" CanUserAddRows="False" Grid.Row="1"  >
            <DataGrid.CellStyle>
                <Style TargetType="DataGridCell">
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <!--单元格被选中时 改变颜色-->
                            <Setter Property="Background" Value="LightPink"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.CellStyle>
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="Background" Value="LightBlue"/>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="Background" Value="SkyBlue"/>
                            <Setter Property="Foreground" Value="Red"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>
            <DataGrid.RowHeaderStyle>
                <!--public Style RowHeaderStyle { get; set; }-->
                <Style TargetType="DataGridRowHeader">
                    <!--必须有targettype,否则无法找到property-->
                    <Setter Property="Width" Value="20"/>
                    <Setter Property="Background" >
                        <Setter.Value>
                            <LinearGradientBrush>
                                <GradientStop Color="White" Offset="0"/>
                                <GradientStop Color="SkyBlue" Offset="1"/>
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataGrid.RowHeaderStyle>
            <!--给整个表头添加颜色开始-->
            <DataGrid.ColumnHeaderStyle>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                <GradientStop Color="White" Offset="0"/>
                                <GradientStop Color="LightBlue" Offset="0.5"/>
                                <GradientStop Color="White" Offset="1"/>
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Foreground" Value="Black"/>
                    <Setter Property="FontSize" Value="13" />
                </Style>
            </DataGrid.ColumnHeaderStyle>
            <!--给整个表头添加颜色结束-->
            <!--添加完颜色为什么不能给姓名排序了?不是不能排序,是显示的不明显-->
            <DataGrid.Columns>
                <!--public ObservableCollection
                <DataGridColumn>Columns { get; }--> <!--表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。-->
                <DataGridTemplateColumn Header="操作" Width="40">
                    <DataGridTemplateColumn.CellTemplate><!--public DataTemplate CellTemplate { get; set; }-->
                        <!--获取或设置一个模板,该模板用于显示未处于编辑模式的单元格的内容。-->
                        <!--<DataTemplate>
                                VisualTree
                            </DataTemplate>-->
                        <DataTemplate>
                            <CheckBox/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="公司名称" Width="80" Binding="{Binding companyname,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="姓名" Width="80" Binding="{Binding name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                <!--<DataGridComboBoxColumn Header="性别" SelectedItemBinding="{Binding sex}" ItemsSource="{Binding Source={StaticResource sex1}}"/>-->
                <!--获取或设置当前选定项的绑定。-->
                <DataGridTemplateColumn Header="性别">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding sex}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate >
                            <ComboBox x:Name="combobox" ItemsSource="{Binding Source={StaticResource sex1}}" SelectedItem="{Binding sex}" IsSynchronizedWithCurrentItem="False"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                    <!--感觉编辑起来选中格外费事啊-->
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="年龄" Width="80" Binding="{Binding age,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="职务" Width="80" Binding="{Binding job,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值