Dot-Net
如何擷取 DataGrid 列標題上的“點擊”事件
.NET 4 附帶的似乎
DataGrid不包含列標題和行標題點擊的事件。我想接收列標題點擊的事件,因為我想提供自己的排序行為並關閉預設排序,這是因為我的視圖模型是一個分頁模型,一次只能顯示 25/50/100 行,預設排序當然只會對目前頁面進行排序。現在我可以創建一個
DataGridColumnHeader包含可點擊元素和 set 的新樣式ColumnHeaderStyle,儘管這看起來很痛苦,因為我很難弄清楚被點擊的是哪一列等。還有其他人反對這個並解決了嗎?
標題只是按鈕。像任何按鈕一樣,您可以註冊到
Click事件以擷取這些點擊。只需設置樣式定位DataGridColumnHeader並添加Click事件處理程序。然後在處理程序中,您可以直接通過sender. 然後,您可以獲得Column與該標頭關聯的資訊以及與之關聯的其他資訊。<DataGrid> <DataGrid.Resources> <Style TargetType="DataGridColumnHeader"> <EventSetter Event="Click" Handler="columnHeader_Click" /> </Style> </DataGrid.Resources> </DataGrid>然後在程式碼中:
private void columnHeader_Click(object sender, RoutedEventArgs e) { var columnHeader = sender as DataGridColumnHeader; if (columnHeader != null) { // do stuff } }進一步查看
DataGrid,我注意到有一個ColumnHeaderStyle屬性。我認為通過此屬性應用樣式會更好。<DataGrid> <DataGrid.ColumnHeaderStyle> <Style TargetType="DataGridColumnHeader"> <EventSetter Event="Click" Handler="columnHeader_Click" /> </Style> </DataGrid.ColumnHeaderStyle> </DataGrid>