做過ASP.NET開發的朋友都知道,ASP.NET提供了強大的列表數據控件,從ASP.NET1.1
時代的DataGrid,到ASP.NET2.0時代的GridView,再到ASP.NET3.5時代的ListView,功能越
來越強大,使用起來也非常的靈活.在Silverlight2中,同樣提供了一個類似的數據列表控件
DataGrid,雖然silverlight是WPF的一個子集,但是在WPF卻沒有提供DataGridR控件.
DataGrid控件提供了一個非常靈活的方式來進行表格數據的顯示,內置的表類型有文本框列
,復選框列和模板列,內置支持排序,鎖定列功能,以及內置支持下拉顯示一條記錄詳細信息的功能.
使用方式一,自動生成列
首先定義一個數據對象,設置DataGrid的AutoGenerateColumns屬性為True,以便讓DataGrid可以自動生成列,這樣綁定的數據可以自動實現編輯功能,它會自動選用DataGridCheckBoxColumn和DataGridTextColumn.在你的數據對象中設置字段屬性是否為可寫可讀意味着該列是否可編輯.
數據對象BookClass:

public class BookClass
{
public string Title { get; set; }//自動使用DataGridTextColumn模板
public string Author { get; set; }//自動使用DataGridTextColumn模板
public DateTime Time { get{return DateTime.Now;}}//不可修改,只讀
public bool IsCheck { get; set; }//自動使用DataGridCheckBoxColumn模板
/// <summary>
/// 實例化
/// </summary>
/// <param name="title">書名</param>
/// <param name="author">作者</param>
/// <param name="ischeck">是否選擇</param>
public BookClass(string title, string author,bool ischeck)
{
Title = title;
Author = author;
IsCheck = ischeck;
}
}
數據綁定控件DataGridBook:為方便檢測是否更改數據對象,添加一個Button按鈕

<UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="DataGridTest.Control.DataGridBook"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="150">
<Grid x:Name="LayoutRoot" Background="White">
<data:DataGrid Name="gridAutoGenerateColumns" AutoGenerateColumns="True">
</data:DataGrid>
<Button Name="btnTest" Content="檢測" Click="Button_Click" Width="60" Height="24" VerticalAlignment="Bottom" />
</Grid>
</UserControl>
后台cs代碼為:

/// <summary>
/// 數據列自動生成
/// </summary>
public partial class DataGridBook : UserControl
{
public DataGridBook()
{
InitializeComponent();
DataBinding();
}
public void DataBinding()
{
List<BookClass> list = new List<BookClass>() { new BookClass("射雕英雄傳", "金庸", true), new BookClass("壞蛋是怎樣煉成的", "六道", false) };
gridAutoGenerateColumns.ItemsSource = list;
}
/// <summary>
/// 檢測
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Click(object sender, RoutedEventArgs e)
{
if (gridAutoGenerateColumns.SelectedIndex == -1)
return;
BookClass book = gridAutoGenerateColumns.SelectedItem as BookClass;
MessageBox.Show(book.Title + "," + book.Author + "," + book.Time + "," + book.IsCheck.ToString());
}
}
運行頁面如圖所示
現在我們在dataGrid中修改一下數據,檢查是否改變了數據對象,在修改值內容后我們點擊檢測如圖所示
發現除了Time屬性為可讀不可修改,均改變了數據對象
DataGrid其他屬性:
CanUserReorderColumns:是否可以拖動列
CanUserResizeColumns:是否可以設置列寬
CanUserSortColumns:是否可以對列排序
使用方式二 自定義列