首页 > Windows开发 > 详细

windows8应用开发——数据绑定

时间:2014-03-21 01:46:00      阅读:662      评论:0      收藏:0      [点我收藏+]

1、单条数据绑定

①建立数据类

bubuko.com,布布扣
  public class Employee
    {
        public string Name { get; set; }
        public int Number { get; set; }
        public string Post { get; set; }
        public Double Salary { get; set; }
        public Employee(string name, int number, string post, Double salary)
        {
            Name = name;
            Number = number;
            Post = post;
            Salary = salary;
        }
    }
bubuko.com,布布扣

②前台文本框

bubuko.com,布布扣
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Name="LayoutRoot">
        <TextBlock HorizontalAlignment="Left" Margin="441,131,0,0" TextWrapping="Wrap" Text="员工信息表" VerticalAlignment="Top" Height="60" FontSize="40"/>
        <TextBlock HorizontalAlignment="Left" Margin="352,221,0,0" TextWrapping="Wrap" Text="姓名:" VerticalAlignment="Top" FontSize="30" Height="60" Width="104"/>
        <TextBlock HorizontalAlignment="Left" Margin="352,286,0,0" TextWrapping="Wrap" Text="工号:" VerticalAlignment="Top" Width="90" Height="60" FontSize="30" RenderTransformOrigin="0.311,0.441"/>
        <TextBlock HorizontalAlignment="Left" Margin="352,346,0,0" TextWrapping="Wrap" Text="职务:" VerticalAlignment="Top" Width="90" Height="60" FontSize="30"/>
        <TextBlock HorizontalAlignment="Left" Margin="352,411,0,0" TextWrapping="Wrap" Text="薪资:" VerticalAlignment="Top" FontSize="30" Width="90" Height="60"/>
        <TextBox x:Name="NameTxb" HorizontalAlignment="Left" Margin="524,221,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="200" FontSize="25" Height="40"/>
        <TextBox x:Name="NumberTxb" HorizontalAlignment="Left" Margin="524,286,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="25" Width="200" Height="40" RenderTransformOrigin="1.075,0.363"/>
        <TextBox x:Name="PostTxb" HorizontalAlignment="Left" Margin="524,346,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="200" Height="40" FontSize="25"/>
        <TextBox x:Name="SalaryTxb" HorizontalAlignment="Left" Margin="524,411,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="200" Height="40" FontSize="25"/>

    </Grid>
bubuko.com,布布扣

③后台绑定

bubuko.com,布布扣
InitializeComponent();
            Employee employee = new Employee("小亮", 001, "经理", 15000);
            LayoutRoot.DataContext = employee;
            //绑定姓名
            Binding bindingName = new Binding();
            //设置绑定模式
            bindingName.Mode = BindingMode.OneWay;
            bindingName.Path = new PropertyPath("Name");
            NameTxb.SetBinding(TextBox.TextProperty, bindingName);
            //绑定工号
            Binding bindingNumber = new Binding();
            bindingNumber.Mode = BindingMode.OneWay;
            bindingNumber.Path = new PropertyPath("Number");
            NumberTxb.SetBinding(TextBox.TextProperty, bindingNumber);
            //绑定职务
            Binding bindingPost = new Binding();
            bindingPost.Mode = BindingMode.OneWay;
            bindingPost.Path = new PropertyPath("Post");
            PostTxb.SetBinding(TextBox.TextProperty, bindingPost);
            //绑定薪资
            Binding bindingSalary = new Binding();
            bindingSalary.Mode = BindingMode.OneWay;
            bindingSalary.Path = new PropertyPath("Salary");
            SalaryTxb.SetBinding(TextBox.TextProperty, bindingSalary);
bubuko.com,布布扣

2、集合对象绑定

①前台布局

bubuko.com,布布扣
 <ComboBox x:Name="ShowComboBox" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="219,205,0,513" VerticalAlignment="Top" Width="380" FontSize="30" Height="50">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="姓名" FontSize="25" />
                        <TextBlock Text="{Binding Name}" FontSize="25" />
                        <TextBlock Text="年龄" FontSize="25" />
                        <TextBlock Text="{Binding Age}" FontSize="25" />
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
        <Button Width="350" Height="60" Margin="638,293,0,415" FontSize="30" Content="参加集合数据" Click="Button_Click_1" />
        <Button Width="350" Height="60" Margin="638,218,0,490" FontSize="30" Content="修改Person对象数据" Click="Button_Click_2" />
bubuko.com,布布扣

②后台创建person类

bubuko.com,布布扣
    public class Person : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public Person(string name, int age)
        {
            Name = name;
            Age = age;
        }
        private string _name;
        private int _age;
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;

                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Name"));
                }
            }
        }
        public int Age
        {
            get { return _age; }
            set
            {
                _age = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Age"));
                }
            }
        }

    }
bubuko.com,布布扣

③初始化数据

bubuko.com,布布扣
public ObservableCollection<Person> personList = new ObservableCollection<Person>();
        public MainPage()
        {
            this.InitializeComponent();
            personList.Add(new Person("Jack", 25));
            personList.Add(new Person("Tom", 10));
            personList.Add(new Person("Amy", 29));
            ShowComboBox.DataContext = personList;
        }
bubuko.com,布布扣

④实现添加修改功能

bubuko.com,布布扣
 private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            personList.Add(new Person("Tim", 30));
        }

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            personList[0].Name = "Json";
            personList[0].Age = 20;
        }
bubuko.com,布布扣

3、分层数据绑定

①声明数据资源实例

bubuko.com,布布扣
<Page.Resources>
        <local:SchoolList x:Key="SchoolData"/>
        <CollectionViewSource x:Name="School" Source="{StaticResource SchoolData}"/>
        <CollectionViewSource x:Name="Grades" Source="{Binding Grades,Source={StaticResource School}}"/>
        <CollectionViewSource x:Name="Classes" Source="{Binding Classes,Source={StaticResource Grades}}"/>
    </Page.Resources>
bubuko.com,布布扣

②前台显示

bubuko.com,布布扣
 <ListBox ItemsSource="{Binding Source={StaticResource School}}" DisplayMemberPath="Name" Margin="100,50,0,766"/>
        <ListBox ItemsSource="{Binding Source={StaticResource Grades}}" DisplayMemberPath="Name" Margin="0,50,0,725"/>
        <ListBox ItemsSource="{Binding Source={StaticResource Classes}}" DisplayMemberPath="Name" Margin="0,50,0,685"/>
        <ContentControl Content="{Binding Source={StaticResource Classes}}" Margin="22,88,-22,-38">
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <StackPanel Margin="5">
                        <StackPanel Orientation="Horizontal" Margin="10,10">
                            <TextBlock Text="男生人数:" Margin="0,0,5,0" FontSize="20"/>
                            <TextBlock Text="{Binding BoyNum}" FontSize="20"/>
                        </StackPanel>
                        <StackPanel Orientation="Horizontal" Margin="10,0">
                            <TextBlock Text="女生人数:" Margin="0,0,5,0" FontSize="20"/>
                            <TextBlock Text="{Binding GirlNum}" FontSize="20"/>
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
bubuko.com,布布扣

③新建三个数据类

bubuko.com,布布扣
 public class Class
    {
        public string Name { get; set; }
        public int BoyNum { get; set; }
        public int GirlNum { get; set; }
    }
    public class Grade
    {
        public string Name { get; set; }
        public IEnumerable<Class> Classes { get; set; }
    }
    public class School
    {
        public string Name { get; set; }
        public IEnumerable<Grade> Grades { get; set; }
    }
bubuko.com,布布扣

④实现分级数据初始化

bubuko.com,布布扣
 public class SchoolList : List<School>
    {
        public SchoolList() { this.AddRange(GetSchool()); }
        public IEnumerable<School> GetSchool()
        {
            return from x in Enumerable.Range(1, 2)
                   select new School
                   {
                       Name = "学校" + x,
                       Grades = GetGrades(x)
                   };
        }
        public IEnumerable<Grade> GetGrades(int x)
        {
            return from y in Enumerable.Range(1, 3)
                   select new Grade
                   {
                       Name = String.Format("年级{0}-{1}", x, y),
                       Classes = GetClasses(x, y)
                   };
        }
        public IEnumerable<Class> GetClasses(int x, int y)
        {
            return from z in Enumerable.Range(1, 4)
                   select new Class
                   {
                       Name = String.Format("班级{0}-{1}-{2}", x, y, z),
                       BoyNum = 25 - (x * y * z),
                       GirlNum = x * y * z
                   };
        }
    }
bubuko.com,布布扣

windows8应用开发——数据绑定,布布扣,bubuko.com

windows8应用开发——数据绑定

原文:http://www.cnblogs.com/danznb/p/3614753.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!