XAML 学习(3)

来源:互联网 发布:数据库应用账户管理 编辑:程序博客网 时间:2024/06/08 07:18

数据绑定.

类文件:

using System;
using System.Windows;
using System.ComponentModel;
using System.Windows.Data;
using System.Collections.ObjectModel;

namespace WindowsApp3
{
    public class MyData : INotifyPropertyChanged
    {
        private string m_Name;
        private int m_Id;
        private string m_Remark;

        public string Remark
        {
            get { return m_Remark; }
            set { m_Remark = value; }
        }

        public int ID
        {
            get { return m_Id; }
            set { m_Id = value; }
        }

        public string Name
        {
            get { return m_Name; }
            set { m_Name = value; }
        }

        public MyData(string strName,int intId,string strRemark)
        {
            this.m_Name = strName;
            this.m_Id = intId;
            this.m_Remark = strRemark;
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(String info)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    public class MyDataColl : ObservableCollection<MyData>
    {
        public MyData dt1 = new MyData("B",10002, "THIS IS MYDATA2");
        public MyData dt2 = new MyData("A",10001, "THIS IS MYDATA1");
        public MyData dt3 = new MyData("D",10004, "THIS IS MYDATA4");
        public MyData dt4 = new MyData("C",10003, "THIS IS MYDATA3");
        public MyData dt5 = new MyData("E",10001,"THIS IS MYDATA5");
        public MyData dt6 = new MyData("F",10002,"THIS IS MYDATA6");
        public MyData dt7 = new MyData("G",10003,"THIS IS MYDATA7");

        public MyDataColl()
            : base()
        {
            Add(dt1);
            Add(dt2);
            Add(dt3);
            Add(dt4);
            Add(dt5);
            Add(dt6);
            Add(dt7);
        }
    }
}
 

前台文件:

<Window x:Class="WindowsApp3.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:source="clr-namespace:WindowsApp3"
    Name="WinDemo"
    Title="WindowsApp3" Height="280" Width="400"
    >
  <Canvas>
    <Grid Name="grdDemo">
      <Grid.Resources>
        <ObjectDataProvider x:Key="MyDataResource" ObjectType="{x:Type source:MyDataColl}" />
        <DataTemplate  x:Key="orderCells">
          <Canvas Width="{TemplateBinding ListBox.Width}" Height="20">
            <TextBlock Canvas.Left="5" Text="{Binding Path=Name}"/>
            <TextBlock Canvas.Left="100" Text="{Binding Path=ID}"/>
            <TextBlock Canvas.Left="200" Text="{Binding Path=Remark}"/>
            <Button Canvas.Left="300">修改</Button>
          </Canvas>
        </DataTemplate>
       
      </Grid.Resources>
      <Grid.DataContext>
        <Binding Source="{StaticResource MyDataResource}"/>
      </Grid.DataContext>

      <ListBox Name="myListBox" Canvas.Left="10" Canvas.Top="10"
      Width="400" Height="150" Background="Honeydew"
      ItemTemplate="{StaticResource orderCells}"
      ItemsSource="{Binding Source={StaticResource MyDataResource}}"
      IsSynchronizedWithCurrentItem="True"/>
    </Grid>
    <Button Canvas.Top="160" Name="btnPre" Width="60" Height="20">Previous</Button>
    <Button Canvas.Top="160" Canvas.Left="60"  Name="btnNext" Width="60" Height="20">Next</Button>
  </Canvas>
</Window>

后台文件:

using System;
using System.Collections;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Data;
using System.Windows.Input;

namespace WindowsApp3
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>

    public partial class Window1 : System.Windows.Window
    {
        public System.Windows.Data.CollectionView myCollectionView;

        public Window1()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(Window1_Loaded);
           
        }

        void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            myCollectionView = (System.Windows.Data.CollectionView)CollectionViewSource.GetDefaultView(grdDemo.DataContext);
            this.btnPre.Click += new RoutedEventHandler(btnPre_Click);
            this.btnNext.Click += new RoutedEventHandler(btnNext_Click);
        }

        void btnNext_Click(object sender, RoutedEventArgs e)
        {
            myCollectionView.MoveCurrentToNext();
            if (myCollectionView.IsCurrentAfterLast)
            {
                myCollectionView.MoveCurrentToFirst();
            }
            myCollectionView = (System.Windows.Data.CollectionView)CollectionViewSource.GetDefaultView(grdDemo.DataContext);
        }

        void btnPre_Click(object sender, RoutedEventArgs e)
        {
            myCollectionView.MoveCurrentToPrevious();

            if (myCollectionView.IsCurrentBeforeFirst)
            {
                myCollectionView.MoveCurrentToLast();
            }
            myCollectionView = (System.Windows.Data.CollectionView)CollectionViewSource.GetDefaultView(grdDemo.DataContext);
        }
    }
}

原创粉丝点击