綜合應用WPF/WCF/WF/LINQ之三十八:實現一個簡單的DataGrid之總體介紹

爲了方便讀者學習,請單擊這裏下載源代碼。
  首先,我們來看一下使用這個控件後的效果圖:

  我們再來看看實現這個控件的XAML代碼:
    1 <common:DataGrid Name="grdDataGrid" ItemsSource="{Binding}" CheckBoxChecked="grdDataGrid_CheckBoxChecked" ButtonClick="grdDataGrid_ButtonClick" ComboBoxSelectionChanged="grdDataGrid_ComboBoxSelectionChanged">
    2     <ListView.View>
    3         <GridView>
    4             <common:DataGridColumn Header="First Name" ColumnType="TextBlock" TextBlockTextPath="LastName" ButtonValuePath="ID" />
    5             <common:DataGridColumn Header="Last Name" ColumnType="ComboBox" ComboBoxTextPath="LastName" ComboBoxDisplayMemberPath="LastName" ComboBoxSelectedValuePath="ID" HasDifferentDataContext="True" SortPropertyName="LastName" />
    6             <common:DataGridColumn Header="ID" ColumnType="CheckBox" CheckBoxValuePath="ID" SortPropertyName="ID" Width="50" />
    7             <common:DataGridColumn Header="Date of Birth" TextBlockTextPath="DateOfBirth" TextBlockTextAlignment="Right" SortPropertyName="DateOfBirth" IsDefaultSortColumn="True" />
    8         </GridView>
    9     </ListView.View>
   10 </common:DataGrid>
  我們可以看到,使用這個控件跟普通的ListView控件沒有太多的區別。我們只需要在DataGridColumn中指定ColumnType爲Button、CheckBox、ComboBox、TextBox等,默認爲TextBlock,然後對應該類型設定相應的屬性即可。而相關的排序、DataTemplate等功能則已經完全封裝了。另外,普通的ListView控件的RoutedEventArgs中的信息太少,而取得SourceRowIndex、SourceColumnIndex、CurrentRowIndex、CurrentColumnIndex等則又很難實現,且非常重要,所以筆者也實現了自己的RoutedEventArgs,提供上述各種Index,方便大家在該控件的事件中直接使用。
  下面的幾篇文章我將對該控件中的各個重要方面進行一一講解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章