silverlight datagrid表头添加控件
2012-12-11 11:42
483 查看
想在silverlight的datagrid中添加一个列头控件,checkbox
首先添加资源文件,app也要用相应的设置,资源文件如下:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
<!-- 应该在此定义资源字典条目。-->
<Style x:Key="DataGridColumnHeaderStyle1" 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,0,56,0" Content="选择Foreground="Green"/>
</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,0,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>
</ResourceDictionary>
然后在grid中对应列添加如下代码:
<data:DataGridTemplateColumn HeaderStyle="{StaticResource DataGridColumnHeaderStyle1}">
这样一切都搞定啦。
效果如下:
方法二:
在页面内部添加资源:
<UserControl.Resources>
<Style x:Key="checkHeader" TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text=" "></TextBlock>
<CheckBox x:Name="headChoice"
Click="chChoiceHeader_Click"
HorizontalAlignment="Center"></CheckBox>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
添加完以后,在gird列定义时添加如下代码:
<sdk:DataGridTemplateColumn Width="50" HeaderStyle="{StaticResource checkHeader}">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="cbChoice" HorizontalAlignment="Center"></CheckBox>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>就可以了.
麻烦的地方在于每个地方都要填加.
在程序后台获取的方法是:
CheckBox
button = this.gridManager.Columns[this.gridManager.Columns.Count -
1].GetCellContent(item).FindName("cbChoice") as CheckBox;
首先添加资源文件,app也要用相应的设置,资源文件如下:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
<!-- 应该在此定义资源字典条目。-->
<Style x:Key="DataGridColumnHeaderStyle1" 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,0,56,0" Content="选择Foreground="Green"/>
</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,0,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>
</ResourceDictionary>
然后在grid中对应列添加如下代码:
<data:DataGridTemplateColumn HeaderStyle="{StaticResource DataGridColumnHeaderStyle1}">
这样一切都搞定啦。
效果如下:
方法二:
在页面内部添加资源:
<UserControl.Resources>
<Style x:Key="checkHeader" TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text=" "></TextBlock>
<CheckBox x:Name="headChoice"
Click="chChoiceHeader_Click"
HorizontalAlignment="Center"></CheckBox>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
添加完以后,在gird列定义时添加如下代码:
<sdk:DataGridTemplateColumn Width="50" HeaderStyle="{StaticResource checkHeader}">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="cbChoice" HorizontalAlignment="Center"></CheckBox>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>就可以了.
麻烦的地方在于每个地方都要填加.
在程序后台获取的方法是:
CheckBox
button = this.gridManager.Columns[this.gridManager.Columns.Count -
1].GetCellContent(item).FindName("cbChoice") as CheckBox;
相关文章推荐
- Silverlight中在DataGrid 表头添加图片
- Silverlight DataGrid 多表头 样式实现
- 为DataGrid添加CheckBox控件的例子
- asp.net使用控件datagrid实现表头单元格合并
- DataGrid里添加DropDownLit控件
- 稳扎稳打Silverlight(4) - 2.0控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- (牛人莫入) Silverlight 3 之控件DataGrid
- Silverlight DataGrid 模板列根据内容动态生成控件
- 如何在QTableWidget表头(列头)添加QCheckBox控件
- DataGrid编辑状态添加DropDownList控件模板列、设置样式
- 给DataGrid加CheckBox列并在表头添加全选、全选按钮、置零按钮
- Windows 窗体 DataGrid 控件添加表和列
- 通过扩展Silverlight的控件DataGrid,使其垂直滚动条支持鼠标滑轮 (转)
- 为Silverlight控件添加鼠标滚轮支持
- silverlight的Datagrid控件列绑定属性笔记
- 在DataGrid页眉上添加全选的CheckBox控件
- Silverlight中DataGrid表头和列对齐方式的设置(原创)
- DataGrid实现(上下左右移动,添加删除行列,导出,表头拖动)
- 稳扎稳打Silverlight(4) - 2.0控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- 【原创】Silverlight DataGrid对核心控件DataGrid的任意单元格进行获取和设置分析。