---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
今天学习的是ADO.NET相关内容,ADO.NET可以与SQL Server等数据源进行访问,并进行检索、删除、更新、插入等操作。
首先在学习ADO.NET之前,杨老师先讲了数据绑定。所有属性都能通过{binding **}来进行绑定,而toortip属性可以用来设置提示。
但是遇到一个问题,如图
当点击“年龄+1”按钮时,相应的年龄文本框却没有发生改变,原因是年龄文本框没有办法监听到数据发生的改变,所以需要对原来的代码进行改进。
Person类代码:
class Person:INotifyPropertyChanged//接口,监听是否需要通知对象的属性改变
{
private int age;//声明一个私有变量,因为Age没办法再用简体的写法
public string Name//Name属性
{
get;
set;
}
public int Age//Age属性
{
get
{
return age;//接收
}
set
{
this.age = value;//设置值
if (PropertyChanged != null)//判断是否有发生改变的事件
{
PropertyChanged(this, new PropertyChangedEventArgs("age"));//如果发生改变,就改变age的值
}
}
}
通过INotifyPropertyChanged接口来监听属性是否发生改变,当使用这种方法时,类中接收及设置数据的方法不能采用简写的方式,并在set中判断所要监听的值是否发生改变,如果发生改变,就改变相应的Age的值。
主窗口代码:
Person person = new Person();//实例化person类
private void Window_Loaded(object sender, RoutedEventArgs e)
{
person.Name = "第六天魔王";//为person类的name属性赋值
person.Age = 23;//为person类的age属性赋值
txtName.DataContext = person;//文本框txtname数据绑定
txtAge.DataContext = person;//文本框txtage数据绑定
}
private void button1_Click(object sender, RoutedEventArgs e)
{
person.Age++;//Age值自加1
}
首先在MainWindow类中实例化Person类,然后在窗口加载事件发生时为属性赋值并进行数据绑定。
而当单击button1按钮时,将age+1。
关于数据绑定,如果需要绑定的数据项过多时,可以直接用Grid的Name进行绑定。
子控件继承父控件的DataContent,而且子控件可以单独修改自己的DataContent。
也可以用this.DataContext来绑定主窗 体内多有控件
之后讲到了ListBox,列表框,需要注意的是ListBox的显示属性是ItemSource,而不是Content(button)或者是Text(Textblock,TextBox)。
XAML代码:
<ListBox Height="128" DisplayMemberPath="Name" SelectedValuePath="Age" HorizontalAlignment="Left" Margin="258,12,0,0" Name="listBox2" VerticalAlignment="Top" Width="214" >
Displaymenberpath属性:决定ListBox中显示的是绑定的数据中的哪一项数据。
Selectedvaluepath属性:决定选择该项数据时应显示的值
当选中数据项时,点击button按钮时,就会显示此人的年龄。
最后讲到了DataGrid表格控件。
要想达到上图的显示效果,就要用到DataGrid,它可以将结果按表格输出
<DataGrid Name="StuList" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="姓名"></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Age}" Header="年龄"></DataGridTextColumn>
<DataGridCheckBoxColumn Binding="{Binding Gender}" Header="性别"></DataGridCheckBoxColumn>
<DataGridTextColumn Binding="{Binding Score}" Header="分数"></DataGridTextColumn>
<DataGridComboBoxColumn SelectedItemBinding="{Binding Class}" Header="班级" x:Name="selClass"></DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
AutoGenerateColumns属性用来设置是否自动增加列,一般选false,否则在某些情况下会带来麻烦
CanUserAddRows属性用来设置是否在最后一行数据下面加一个空白行
<DataGrid.Columns> 用来设置列数
<DataGridTextColumn Binding="{Binding Name}" Header="姓名"></DataGridTextColumn> 用来设置具体每一列显示的内容及数据绑定
Header用来定义列名
当控件没有Name属性时,用X:Name来给控件命名。
当需要在单元格中使用下拉式菜单,用DataGridComboBoxColumn属性,并用
SelectedItemBinding来进行数据绑定。
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net