WPF之DataGrid用法(一)
2014-04-03 23:00
399 查看
介绍数据表格DataGrid的基础用法。
DataGrid可用AutoGenerateColumns属性控制列的生成。Column包含DataGridTextColumn、DataGridCheckBoxColumn、DataGridComboBoxColumn、DataGridHyperlinkColumn、DataGridTemplateColumn等5中格式。
主要XAML代码:
其中列头选择框居中需要修改HeaderStyle属性,修改ContentPresenter的HorizontalAlignment="Center"即可。修改样式通常使用Blend完成,这里就不在详细介绍。
另外,通过设置NotifyOnSourceUpdated=True,当数据选择框选择更改时来触发消息,而后用DataGrid的SourceUpdated事件来捕获,在事件中处理列头选择框的状态。
静态资源。
x:Static 代码实体。
ComboBoxItem 类型的内联集合。
实现效果如下:
如需使用非静态资源,则需要使用DataGridComboBoxColumn的EditingElementStyle样式修改编辑样式,通过ElementStyle修改正常显示(非编辑状态)样式。
主要XAML代码如下:
实现效果如下:
主要XAML代码:
DataGridTemplateColumn可实现以上任何功能,包括checkbox,combobox等。
现实现如下效果:
通过修改显示模板和编辑模板来实现功能,主要XMAL代码如下:
代码
作者:FoolRabbit
出处:http://blog.csdn.net/rabbitsoft_1987
欢迎任何形式的转载,未经作者同意,请保留此段声明!
DataGrid可用AutoGenerateColumns属性控制列的生成。Column包含DataGridTextColumn、DataGridCheckBoxColumn、DataGridComboBoxColumn、DataGridHyperlinkColumn、DataGridTemplateColumn等5中格式。
1.DataGridTextColumn
DataGridTextColumn最常用,不再做介绍。2.DataGridCheckBoxColumn
DataGridCheckBoxColumn是勾选框数据列。效果如下:主要XAML代码:
<DataGridCheckBoxColumn Binding="{Binding Selected,NotifyOnSourceUpdated=True,UpdateSourceTrigger=PropertyChanged}" HeaderStyle="{StaticResource DataGridColumnHeaderStyle1}"> <DataGridCheckBoxColumn.Header> <CheckBox IsChecked="{Binding IsAllSelected,RelativeSource={RelativeSource AncestorType={x:Type local:DataGridCheckBoxColumn}}}"/> </DataGridCheckBoxColumn.Header> </DataGridCheckBoxColumn>
其中列头选择框居中需要修改HeaderStyle属性,修改ContentPresenter的HorizontalAlignment="Center"即可。修改样式通常使用Blend完成,这里就不在详细介绍。
另外,通过设置NotifyOnSourceUpdated=True,当数据选择框选择更改时来触发消息,而后用DataGrid的SourceUpdated事件来捕获,在事件中处理列头选择框的状态。
3.DataGridComboBoxColumn
若要填充下拉列表,请首先使用下列选项之一设置 ComboBox 的 ItemsSource 属性。静态资源。
x:Static 代码实体。
ComboBoxItem 类型的内联集合。
实现效果如下:
如需使用非静态资源,则需要使用DataGridComboBoxColumn的EditingElementStyle样式修改编辑样式,通过ElementStyle修改正常显示(非编辑状态)样式。
主要XAML代码如下:
<DataGrid x:Name="grd" ItemsSource="{Binding StuList3}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding No}" Header="学号"/> <DataGridTextColumn Binding="{Binding Name}" Header="姓名"/> <!--使用普通List集合--> <DataGridComboBoxColumn x:Name="cmb" Header="性别"> <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="ComboBox"> <Setter Property="ItemsSource" Value="{Binding Path=DataContext.SexList,ElementName=grd}" /> <Setter Property="DisplayMemberPath" Value="Name" /> <Setter Property="SelectedValuePath" Value="Name" /> <Setter Property="SelectedValue" Value="{Binding Sex,UpdateSourceTrigger=PropertyChanged}" /> </Style> </DataGridComboBoxColumn.EditingElementStyle> <DataGridComboBoxColumn.ElementStyle> <Style TargetType="ComboBox"> <Setter Property="ItemsSource" Value="{Binding Path=DataContext.SexList,ElementName=grd}" /> <Setter Property="DisplayMemberPath" Value="Name" /> <Setter Property="SelectedValuePath" Value="Name" /> <Setter Property="SelectedValue" Value="{Binding Sex}" /> </Style> </DataGridComboBoxColumn.ElementStyle> </DataGridComboBoxColumn> <!--使用静态资源--> <DataGridComboBoxColumn Header="性别(静态资源)" ItemsSource="{Binding Source={StaticResource myEnum}}" TextBinding="{Binding Sex}" SelectedItemBinding="{Binding Sex,UpdateSourceTrigger=PropertyChanged}"> </DataGridComboBoxColumn> <!--使用x:Static扩展标记--> <DataGridComboBoxColumn Header="性别(x:Static)" ItemsSource="{x:Static local:ViewModel.SexList2}" TextBinding="{Binding Sex}" SelectedItemBinding="{Binding Sex,UpdateSourceTrigger=PropertyChanged}"> </DataGridComboBoxColumn> <!--使用内联集合--> <DataGridComboBoxColumn Header="性别(内联集合)" TextBinding="{Binding Sex}" SelectedItemBinding="{Binding Sex,UpdateSourceTrigger=PropertyChanged}"> <DataGridComboBoxColumn.ItemsSource> <col:ArrayList> <sys:String>男</sys:String> <sys:String>女</sys:String> </col:ArrayList> </DataGridComboBoxColumn.ItemsSource> </DataGridComboBoxColumn> </DataGrid.Columns> </DataGrid>
4.DataGridHyperlinkColumn
使用 DataGridHyperlinkColumn 来显示包含 Uri 的数据,如 HTTP 地址或电子邮件地址。只有在 Hyperlink 的直接或间接父级是导航主机时,才会发生 Hyperlink 导航。 导航主机的例子包括 NavigationWindow、 Frame、或任何可以承载 XBAPs(如 Microsoft Internet Explorer 6 或更高版本以及 Firefox 2.0 或更高版本)的浏览器。实现效果如下:
主要XAML代码:
<DataGridHyperlinkColumn Binding="{Binding Http}" ContentBinding="{Binding Name}" Header="网址"/>
5.DataGridTemplateColumn
借助于 DataGridTemplateColumn 类型,可以通过指定用于显示和编辑值的单元格模板来创建您自己的列类型。DataGridTemplateColumn可实现以上任何功能,包括checkbox,combobox等。
现实现如下效果:
通过修改显示模板和编辑模板来实现功能,主要XMAL代码如下:
<!--显示模板--> <DataTemplate x:Key="DateTemplate" > <StackPanel Width="60" Height="30"> <Border Background="LightBlue" BorderBrush="Black" BorderThickness="1,1,1,0"> <TextBlock Text="{Binding Birth, StringFormat={}{0:MMM d}}" FontSize="10" HorizontalAlignment="Center" /> </Border> <Border Background="White" BorderBrush="Black" BorderThickness="1"> <TextBlock Text="{Binding Birth, StringFormat={}{0:yyyy}}" FontSize="10" FontWeight="Bold" HorizontalAlignment="Center" /> </Border> </StackPanel> </DataTemplate> <!--编辑模板--> <DataTemplate x:Key="EditingDateTemplate"> <DatePicker SelectedDate="{Binding Birth}" /> </DataTemplate>
代码
作者:FoolRabbit
出处:http://blog.csdn.net/rabbitsoft_1987
欢迎任何形式的转载,未经作者同意,请保留此段声明!
相关文章推荐
- TextKit学习(四)通过boundingRectWithSize:options:attributes:context:计算文本尺寸
- SpringMVC 学习(一)
- SQL游标
- 生成arff文件,csv转为arff
- api的安全问题
- 为Visual Studio 2008类添加版权信息
- Linux文件格式详解
- imagebutton添加.9图片文件
- iOS开发笔记
- 时光轻揉,荒凉了谁的容颜?
- java package 重命名时注意事项
- 设置vs2008代码区的背景色
- 时间:2014年4月3日21:25:28 文件上传过程
- 【cocos2d-x从c++到js】21:使用CocosCode调试JSB
- 【cocos2d-x从c++到js】21:使用CocosCode调试JSB 推荐
- 005_003 Python 根据对象的属性将对象排序
- 虚拟内存、内存泄露和内存溢出
- UVA11383 二分图最佳匹配的性质的应用
- How many Fibs?
- c++跨平台开发经验