<UserControl x:Class="SilverlightApplication12.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" xmlns:sdk="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <!--The DataGridColumnHeader type is located in the System.Windows.Controls.Primitives namespace--> <!--用户自定义资源,用于实现表格头部的全选--> <UserControl.Resources> <Style x:Key="DataGridColumnHeaderCheckBox" targettype="sdk:DataGridColumnHeader"> <Setter Property="Foreground" Value="#FF000000"/> <Setter Property="HorizontalContentAlignment" Value="Left"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="IsTabStop" Value="False"/> <Setter Property="SeparatorBrush" Value="#FFC9CACA"/> <Setter Property="Padding" Value="4"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate targettype="sdk:DataGridColumnHeader"> <Grid x:Name="Root"> <Grid.ColumnDeFinitions> <ColumnDeFinition/> <ColumnDeFinition Width="Auto"/> </Grid.ColumnDeFinitions> <visualstatemanager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="normal"/> <VisualState x:Name="MouSEOver"> <Storyboard> <ColorAnimation Duration="0" To="#FF448DCA" Storyboard.TargetProperty="(Fill).Color" Storyboard.TargetName="BackgroundRectangle"/> <ColorAnimation Duration="0" To="#7FFFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" Storyboard.TargetName="BackgroundGradient"/> <ColorAnimation Duration="0" To="#CCFFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" Storyboard.TargetName="BackgroundGradient"/> <ColorAnimation Duration="0" To="#F2FFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" Storyboard.TargetName="BackgroundGradient"/> </Storyboard> </VisualState> <VisualState x:Name="pressed"> <Storyboard> <ColorAnimation Duration="0" To="#FF448DCA" Storyboard.TargetProperty="(Fill).Color" Storyboard.TargetName="BackgroundRectangle"/> <ColorAnimation Duration="0" To="#D8FFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[0].Color" Storyboard.TargetName="BackgroundGradient"/> <ColorAnimation Duration="0" To="#C6FFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[1].Color" Storyboard.TargetName="BackgroundGradient"/> <ColorAnimation Duration="0" To="#8CFFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[2].Color" Storyboard.TargetName="BackgroundGradient"/> <ColorAnimation Duration="0" To="#3FFFFFFF" Storyboard.TargetProperty="(Fill).(GradientStops)[3].Color" Storyboard.TargetName="BackgroundGradient"/> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="SortStates"> <VisualState x:Name="Unsorted"/> <VisualState x:Name="SortAscending"> <Storyboard> <DoubleAnimation Duration="0" To="1.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SortIcon"/> </Storyboard> </VisualState> <VisualState x:Name="SortDescending"> <Storyboard> <DoubleAnimation Duration="0" To="1.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SortIcon"/> <DoubleAnimation Duration="0" To="-.9" Storyboard.TargetProperty="(RenderTransform).ScaleY" Storyboard.TargetName="SortIcon"/> </Storyboard> </VisualState> </VisualStateGroup> </visualstatemanager.VisualStateGroups> <Rectangle x:Name="BackgroundRectangle" Grid.ColumnSpan="2" Fill="#FF1F3B53" Stretch="Fill"/> <Rectangle x:Name="BackgroundGradient" Grid.ColumnSpan="2" Stretch="Fill"> <Rectangle.Fill> <LinearGradientBrush EndPoint=".7,1" StartPoint=".7,0"> <GradientStop Color="#FCFFFFFF" Offset="0.015"/> <GradientStop Color="#F7FFFFFF" Offset="0.375"/> <GradientStop Color="#E5FFFFFF" Offset="0.6"/> <GradientStop Color="#D1FFFFFF" Offset="1"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> <Grid.ColumnDeFinitions> <ColumnDeFinition/> <ColumnDeFinition Width="Auto"/> </Grid.ColumnDeFinitions> <ContentPresenter > <ContentPresenter.Content> <CheckBox Margin="0,56,0" Content="选择" Checked="BatchSelecCheckBox_Checked" Unchecked="BatchSelecCheckBox_Checked"/> </ContentPresenter.Content> </ContentPresenter> <Path x:Name="SortIcon" Grid.Column="1" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z " Fill="#FF444444" HorizontalAlignment="Left" Margin="4,0" Opacity="0" RenderTransformOrigin=".5,.5" Stretch="Uniform" VerticalAlignment="Center" Width="8"> <Path.RenderTransform> <ScaleTransform ScaleY=".9" ScaleX=".9"/> </Path.RenderTransform> </Path> </Grid> <Rectangle x:Name="VerticalSeparator" Grid.Column="1" Fill="{TemplateBinding SeparatorBrush}" Visibility="{TemplateBinding SeparatorVisibility}" VerticalAlignment="Stretch" Width="1"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <data:DataGrid Name="TestDataGrid" AutoGenerateColumns="False"> <data:DataGrid.Columns> <!--使用自定义资源--> <data:DataGridTemplateColumn HeaderStyle="{StaticResource DataGridColumnHeaderCheckBox}"> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox Name="SelectCheckBox" Tag="{Binding StudentID}"></CheckBox> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> <data:DataGridTextColumn Header="StudentName" Binding="{Binding StudentName}"> </data:DataGridTextColumn> </data:DataGrid.Columns> </data:DataGrid> </Grid> </UserControl>
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightApplication74 { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } /// <summary> /// 根据DataGrid表头CheckBox选中(不选中)实现DataGrid所有列的CheckBox全选(全不选) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BatchSelecCheckBox_Checked(object sender,RoutedEventArgs e) { bool isChecked = (bool)(sender as CheckBox).IsChecked; foreach (object obj in TestDataGrid.ItemsSource) { CheckBox checkBox = TestDataGrid.Columns[0].GetCellContent(obj).FindName("SelectCheckBox") as CheckBox; checkBox.IsChecked = isChecked; } } void MainPage_Loaded(object sender,RoutedEventArgs e) { List<Student> items = GetStudents(); TestDataGrid.ItemsSource = items; } /// <summary> /// 获取数据源 /// </summary> /// <returns></returns> private List<Student> GetStudents() { List<Student> items = new List<Student>(); for (int i = 0; i < 20; i++) { items.Add(new Student(i,"张三" + i)); } return items; } } public class Student { public Student() { } public Student(int _studentID,string _studentName) { this.StudentID = _studentID; this.StudentName = _studentName; } private int studentID; public int StudentID { get { return studentID; } set { studentID = value; } } private string studentName; public string StudentName { get { return studentName; } set { studentName = value; } } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。