WPF入门(四)-WPF+LINQ实现数据绑定、交互及简单datagrid样式
2011-03-22 22:58
591 查看
本事例是基于WPF+LINQ实现的,先上效果图:
要实现这个效果,首先要做的操作肯定是绑定数据,下面是LINQ生成的数据表关系图:
创建数据上下文
WPFDataDataContext db = new WPFDataDataContext();
在XAML界面,使用了两个控件,ComboBox与DataGrid,下面先实现数据的绑定,通过下拉菜单的选择项绑定对应班级的所有信息,所以应该先实现ComboBox控件的数据绑定:
然后通过下拉菜单改变事件绑定DataGrid
XAML需要指定绑定的标题和属性
需要操作DataGrid选中行数据的话,可以做以下操作:
数据的绑定就出来了,跟以前的winform很类似吧,看下效果:
确实样式不是很好看,这个时候我们就可以用到Style,Tigger这些来美化我们的控件了
我这里做了几个简单的样式效果,标题背景色字体修改、鼠标移动的光棒效果、选中行突出等
代码如下
然后一个具有简单样式的DataGrid就展现出来了.
效果图见本文开头。
要实现这个效果,首先要做的操作肯定是绑定数据,下面是LINQ生成的数据表关系图:
创建数据上下文
WPFDataDataContext db = new WPFDataDataContext();
在XAML界面,使用了两个控件,ComboBox与DataGrid,下面先实现数据的绑定,通过下拉菜单的选择项绑定对应班级的所有信息,所以应该先实现ComboBox控件的数据绑定:
/// <summary> /// 向下拉列表中绑定班级信息 /// </summary> public void ToBindcbClass() { //绑定数据源 cbClass.ItemsSource = db.classic.ToList(); //绑定显示值 cbClass.DisplayMemberPath = "className"; //绑定选中的值 cbClass.SelectedValuePath = "classID"; //默认选中 cbClass.SelectedIndex = 0; }
然后通过下拉菜单改变事件绑定DataGrid
/// <summary> /// 下拉列表改变事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbClass_SelectionChanged(object sender, SelectionChangedEventArgs e) { //重新绑定DataGrid ToBinddgInfo(); } /// <summary> /// 根据班级信息向DataGrid中绑定学生信息 /// </summary> public void ToBinddgInfo() { //获取班级编号 int cid = int.Parse(cbClass.SelectedValue.ToString()); dgInfo.ItemsSource = db.stuInfo.Where(s => s.classID == cid); }
XAML需要指定绑定的标题和属性
<DataGrid AutoGenerateColumns="False" Height="135" HorizontalAlignment="Left" Margin="12,41,0,0" Name="dgInfo" VerticalAlignment="Top" Width="260" IsReadOnly="True" GridLinesVisibility="All" CanUserResizeColumns="False" Background="White" ColumnWidth="SizeToHeader" SelectionChanged="dgInfo_SelectionChanged" > <DataGrid.Columns> <DataGridTextColumn Binding="{Binding stuName}" Header="姓名" /> <DataGridTextColumn Binding="{Binding stuNo}" Header="学号" /> <DataGridTextColumn Binding="{Binding stuSex}" Header="性别" /> <DataGridTextColumn Binding="{Binding stuAge}" Header="年龄" /> <DataGridTextColumn Binding="{Binding classic.className}" Header="班级" CanUserSort="False"/> </DataGrid.Columns> </DataGrid>
需要操作DataGrid选中行数据的话,可以做以下操作:
/// <summary> /// 行选择事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgInfo_SelectionChanged(object sender, SelectionChangedEventArgs e) { //获取当前选中行的对象 stuInfo stu = dgInfo.CurrentItem as stuInfo; if (stu != null) { //取出主键做对应操作 // MessageBox.Show(stu.stuId.ToString()); } }
数据的绑定就出来了,跟以前的winform很类似吧,看下效果:
确实样式不是很好看,这个时候我们就可以用到Style,Tigger这些来美化我们的控件了
我这里做了几个简单的样式效果,标题背景色字体修改、鼠标移动的光棒效果、选中行突出等
代码如下
<Window.Resources> <Style TargetType="DataGrid"> <!--拖动改变单元格大小--> <Setter Property="CanUserResizeColumns" Value="false"/> <!--网格线颜色--> <Setter Property="HorizontalGridLinesBrush"> <Setter.Value> <SolidColorBrush Color="LightBlue"/> </Setter.Value> </Setter> <Setter Property="VerticalGridLinesBrush"> <Setter.Value> <SolidColorBrush Color="LightBlue"/> </Setter.Value> </Setter> </Style> <!--标题栏样式--> <Style TargetType="DataGridColumnHeader" > <Setter Property="Width" Value="50"/> <Setter Property="FontSize" Value="14" /> <Setter Property="Background" Value="lightBlue" /> <!--加粗--> <Setter Property="FontWeight" Value="Bold"/> </Style> <!--行样式触发--> <!--背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式--> <Style TargetType="DataGridRow"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="BorderBrush" Value="Red" /> <Setter Property="BorderThickness" Value="1" /> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="LightGray"/> </Trigger> </Style.Triggers> </Style> <!--单元格样式触发--> <Style TargetType="DataGridCell"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="White"/> <Setter Property="BorderThickness" Value="0"/> <Setter Property="Foreground" Value="Red"/> </Trigger> </Style.Triggers> </Style> </Window.Resources>
然后一个具有简单样式的DataGrid就展现出来了.
效果图见本文开头。
相关文章推荐
- wpf dataGrid 简单数据绑定
- WPF Datagrid Header数据绑定,表头复选框实现全选、全否、部分选中,根据条目动态变化
- 如何用javascript实现双向数据绑定 / Backbone.js简单入门范例
- wpf dataGrid 简单数据绑定
- 综合应用WPF/WCF/WF/LINQ之三十八:实现一个简单的DataGrid之总体介绍
- WPF DataGrid 数据绑定、样式、分页、增删改查,连接Access数据库
- 综合应用WPF/WCF/WF/LINQ之三十九:实现一个简单的DataGrid之获取某格的原始(或当前)行(或列)的Index
- 综合应用WPF/WCF/WF/LINQ之四十:实现一个简单的DataGrid之CheckBox已勾选的项的保存
- dropdownlist,datagrid数据绑定简单实现
- wpf dataGrid 简单数据绑定
- WPF中DataGrid数据绑定(泛型和datatable)
- 实现数据双向绑定最简单的方式
- Vue数据双向绑定原理及简单实现方法
- hibernate入门--实现简单的数据查询
- JavaScript数据绑定实现一个简单的 MVVM 库
- angularjs中$http、$location、$watch及双向数据绑定学习实现简单登陆验证
- WPF中DataGrid使用自定义列绑定数据
- SilverLight中datagrid数据绑定的简单使用
- 原来2.0里实现数据绑定控件这么简单!
- Easyui Datagrid 如何实现后台交互显示用户数据列表