WPF的Datagrid显示,样式(隔行)换色

来源:互联网 发布:金字塔 插件编程 编辑:程序博客网 时间:2024/06/17 00:47

主要写一些最近一段时间学习Wpf的显示

直接显示与.net中的gridview有些相似,直接把一个list扔入datagrid中就可以显示,都可以自动的把对象的属性加载到页面上。

MainWindow.xaml.cs

public MainWindow()        {            InitializeComponent();        }        private void Window_Loaded(object sender, RoutedEventArgs e)        {            List<User> list = new List<User>();            for (int i = 0; i < 10; i++)            {                User u = new User();                u.Id = i + 1;                u.Name = "aa" + i;                list.Add(u);            }            this.grid_user.ItemsSource = list;        }    }    public class User    {        public int Id { get; set; }        public string Name { get; set; }   }

MainWindow.xaml   AlternationCount="2"隔行换色

<Grid>        <DataGrid Name="grid_user" IsReadOnly="True" AlternationCount="2">            <DataGrid.Columns>                <DataGridTextColumn Header="Id" Width="50" Binding="{Binding Id}"/>                <DataGridTextColumn Header="Name" Width="50" Binding="{Binding Name}"/>            </DataGrid.Columns>        </DataGrid>    </Grid>

自定义Datagrid的样式

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">    <Style TargetType="DataGrid">        <!--网格线颜色-->        <Setter Property="CanUserResizeColumns" Value="false"/>        <Setter Property="Background" Value="#E6DBBB" />        <Setter Property="BorderBrush" Value="#d6c79b" />        <Setter Property="HorizontalGridLinesBrush">            <Setter.Value>                <SolidColorBrush Color="#d6c79b"/>            </Setter.Value>        </Setter>        <Setter Property="VerticalGridLinesBrush">            <Setter.Value>                <SolidColorBrush Color="#d6c79b"/>            </Setter.Value>        </Setter>    </Style>    <!--标题栏样式-->    <!--<Style  TargetType="DataGridColumnHeader" >        <Setter Property="Width" Value="50"/>        <Setter Property="Height" Value="30"/>        <Setter Property="FontSize" Value="14" />        <Setter Property="Background" Value="White" />        <Setter  Property="FontWeight"  Value="Bold"/>    </Style>-->    <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="0,1,0,1"                             BorderBrush="#e6dbba"                              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>    <!--行样式触发-->    <!--背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式-->    <Style  TargetType="DataGridRow">        <Setter Property="Background" Value="#F2F2F2" />        <Setter Property="Height" Value="25"/>        <Setter Property="Foreground" Value="Black" />        <Style.Triggers>            <!--隔行换色-->            <Trigger Property="AlternationIndex" Value="0" >                <Setter Property="Background" Value="#e7e7e7" />            </Trigger>            <Trigger Property="AlternationIndex" Value="1" >                <Setter Property="Background" Value="#f2f2f2" />            </Trigger>            <Trigger Property="IsMouseOver" Value="True">                <Setter Property="Background" Value="LightGray"/>                <!--<Setter Property="Foreground" Value="White"/>-->            </Trigger>            <Trigger Property="IsSelected" Value="True">                <Setter Property="Foreground" Value="Black"/>            </Trigger>        </Style.Triggers>    </Style>    <!--单元格样式触发-->    <Style TargetType="DataGridCell">        <Setter Property="Template">            <Setter.Value>                <ControlTemplate TargetType="DataGridCell">                    <TextBlock TextAlignment="Center" VerticalAlignment="Center"  >                           <ContentPresenter />                    </TextBlock>                </ControlTemplate>            </Setter.Value>        </Setter>        <Style.Triggers>            <Trigger Property="IsSelected" Value="True">                <!--<Setter Property="Background" Value="White"/>                <Setter Property="BorderThickness" Value="0"/>-->                <Setter Property="Foreground" Value="Black"/>            </Trigger>        </Style.Triggers>    </Style></ResourceDictionary>
1 0
原创粉丝点击