WPF提供一個強大的類(ObservableCollection )可以簡化我們對界面集合顯示的增刪改操作,並且無刷新,這無疑是對用戶對我們程序員都非常有用的。
當ObservableCollection<T>添加一行時,會自動通知綁定該ObservableCollection<T>的控件並做相應修改。如果希望當ObservableCollection<T>中的屬性發生改變時通知UI,則T也需要繼承於INotifyPropertyChanged。
首先聲明實體類
public class Student : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _SID;
public string SID
{
get { return _SID; }
set
{
_SID = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SID"));
}
}
}
private string _SName;
public string SName
{
get { return _SName; }
set
{
_SName = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SName"));
}
}
}
private string _Address;
public string SAddress
{
get { return _Address; }
set
{
_Address = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SAddress"));
}
}
}
}
實體類必須實現PropertyChangedEventHandler 事件這個是更新所需要的
接下來我們添加一個簡易的界面
<Grid>
<StackPanel>
<DataGrid Name="dgStudent" Height="200" CanUserAddRows="False" MouseLeftButtonUp="dgStudent_MouseLeftButtonUp"></DataGrid>
<StackPanel >
<TextBox Name="txtid"></TextBox>
<TextBox Name="txtname"></TextBox>
<TextBox Name="txtaddress"></TextBox>
<Button Name="btnAdd" Content="添加" Click="btnAdd_Click"></Button>
<Button Name="btnUpdate" Content="編輯" Click="btnUpdate_Click"></Button>
<Button Name="btnDelete" Content="刪除" Click="btnDelete_Click"></Button>
</StackPanel>
</StackPanel>
</Grid>
界面很粗糙,隨意弄得
下面我們看看實現添加 編輯 刪除的方式
public ObservableCollection<Student> datalist = new ObservableCollection<Student>(); private void Window_Loaded(object sender, RoutedEventArgs e) { dgStudent.ItemsSource = datalist; } private void btnAdd_Click(object sender, RoutedEventArgs e) { Student s = new Student(); s.SID = txtid.Text; s.SName = txtname.Text; s.SAddress = txtaddress.Text; datalist.Add(s); } private void btnUpdate_Click(object sender, RoutedEventArgs e) { foreach (var item in datalist) { if (item.SID == txtid.Text) { item.SName = txtname.Text; item.SAddress = txtaddress.Text; } } } private void btnDelete_Click(object sender, RoutedEventArgs e) { var ca = (Student)this.dgStudent.SelectedItem; datalist.Remove(ca); } private void dgStudent_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var ca = (Student)this.dgStudent.SelectedItem; if (ca != null) { txtid.Text = ca.SID; txtname.Text = ca.SName; txtaddress.Text = ca.SAddress; } }
這樣就實現的我們對於datagrid的添加刪除修改等操作.比較以前,是不是方便多了。
我參考了eaglenet 的文章學習的
http://www.cnblogs.com/zhangjianli/archive/2012/06/01/2529864.html
