数据绑定.
类文件:
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);
}
}
}