关闭

【黑马程序员】2013年12月5日学习笔记

标签: 黑马程序员
239人阅读 评论(0) 收藏 举报

---------------------- 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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3209次
    • 积分:138
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档