传智播客数据绑定和数据库开发基础(第四季)

1.两个控件之间的数据绑定

Text = "{Binding Path=Value,ElementName=slider1}"


2.控件和类之间的数据绑定

1.创建一个Person类,设置类的接口为INotifyPropertyChanged。

设置相关的命名空间和事件

设置绑定的属性的set。

2.在XMAL的TextBox中设置 Text绑定 类中相关的属性

3.在窗口类中 使用Person来定义对象。将对象赋值给TextBox的 DataContent

自定义的Person类的代码:

  class Person:INotifyPropertyChanged 
    {
        private int age;
        public int Age
        {
            get { return age; }
            set 
            { 
                age = value; 
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Age"));
                }
            }
        }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public event PropertyChangedEventHandler PropertyChanged;

    }

在XMAL中的设置:

Text ="{Binding Age}"

在MainWIndow类中中设置:

  public partial class MainWindow : Window
    {
        Person p = new Person();
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            p.Age = 10;
            textBox2.DataContext = p;
            
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            p.Age++;
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(p.Age.ToString());
        }
    }

数据绑定的内容就完成了。



3.ListBox的应用.

Listbox常用的属性:SelectItem ,SelectValue。ItemSource ,DisplayMemberPath。

XAML:

 <ListBox DisplayMemberPath ="Name" SelectedValue="Age"  Name="lbPerson" Height="170" HorizontalAlignment="Left" Margin="48,86,0,0"  VerticalAlignment="Top" Width="168" />


CS:

 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<Person> listPerson = new List<Person>();
            listPerson.Add(new Person() { Age = 15, Name = "Asuna" });
            listPerson.Add(new Person() { Age = 16, Name = "Hina" });
            listPerson.Add(new Person() { Age = 14, Name = "Misaka" });

            lbPerson.ItemsSource = listPerson;
        }

        private void btnAge_Click(object sender, RoutedEventArgs e)
        {
            object selectItem = lbPerson.SelectedItem;
            object selectAge = lbPerson.SelectedValue;

        }


XMAL:
<ListBox Height="176" HorizontalAlignment="Left" Margin="64,54,0,0" Name="lbComic" VerticalAlignment="Top" Width="171" SelectionChanged="lbComic_SelectionChanged" />

CS:

 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<string> listComic = new List<string>();
            listComic.Add("刀剑神域");
            listComic.Add("某科学的超电磁炮");
            listComic.Add("旋风管家");

            lbComic.ItemsSource = listComic;
        }

        private void lbComic_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            List<string> listPlayer = new List<string>();
            string strComic = (string)lbComic.SelectedItem;
            if (strComic == "刀剑神域")
            {
                listPlayer.Add("亚丝娜");
                listPlayer.Add("桐谷和人");
                listPlayer.Add("桐谷直叶");
                lbPlayer.ItemsSource = listPlayer;
            } 
            else if (strComic == "某科学的超电磁炮")
            {
                listPlayer.Add("御坂美琴");
                listPlayer.Add("白井黑子");
                listPlayer.Add("婚后光子");
                lbPlayer.ItemsSource = listPlayer;
            }
            else if (strComic == "旋风管家")
            {
                listPlayer.Add("三千院凪");
                listPlayer.Add("桂雏菊");
                listPlayer.Add("西泽步");
                lbPlayer.ItemsSource = listPlayer;
            }
        }

4.DataGrid的常见用法。

DataGrid的使用方法跟ListBox很像。都是用来显示数据的常用控件。

1.DataGrid的常用属性:AutoGenerateColumns ,CanUserAddRows,IsReadOnly


2.代码:

XMAL:

<Window x:Class="GridData.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <Grid>
        <DataGrid AutoGenerateColumns ="False" CanUserAddRows ="False"  Name="dgPerson" IsReadOnly ="False"   Height="200" HorizontalAlignment="Left" Margin="44,41,0,0"  VerticalAlignment="Top" Width="360" >
            <DataGrid.Columns>
                <DataGridTextColumn Header ="动漫" Binding ="{Binding Comic}"></DataGridTextColumn>
                <DataGridTextColumn Header ="人物" Binding ="{Binding Name}"></DataGridTextColumn>
                <DataGridTextColumn Header ="年龄" Binding ="{Binding Age}"></DataGridTextColumn>
                <DataGridCheckBoxColumn Header ="性别" Binding ="{Binding Gender}"></DataGridCheckBoxColumn>
                <DataGridComboBoxColumn Header ="班级" SelectedItemBinding ="{Binding ClassName}" x:Name ="className"></DataGridComboBoxColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

CS:

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<Player> lsPlayer = new List<Player>();
            lsPlayer.Add(new Player { Comic = "刀剑神域", Name = "Asuna", Age = 14,Gender = false});
            lsPlayer.Add(new Player { Comic = "某科学的超电磁炮", Name = "Misaka", Age = 14, Gender = false });
            lsPlayer.Add(new Player { Comic = "旋风管家", Name = "Hina", Age = 16, Gender = false });
            lsPlayer.Add(new Player { Comic = "海贼王", Name = "Lufei", Age = 17, Gender = true });

            dgPerson.ItemsSource = lsPlayer;
            dgPerson.
            List<string> classNames = new List<string>();
            classNames.Add("一班");
            classNames.Add("二班");
            classNames.Add("三班");
            classNames.Add("四班");

            className.ItemsSource = classNames;
            string str = null;
        }
    }

自定义类Person:

namespace GridData
{
    class Player
    {
        //所属作品 姓名 年龄 男女 班级
        private string comic;
        public string Comic
        {
            get { return comic; }
            set { comic = value; }
        }

        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private int age;
        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        private bool gender;
        public bool Gender
        {
            get { return gender; }
            set { gender = value; }
        }

        private string className;

        public string ClassName
        {
            get { return className; }
            set { className = value; }
        }

    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值