2
我有一個用戶控件,其中包含一個WPF工具包DataGrid
。此控件在我的應用程序的許多不同的地方使用。網格對於將顯示的數據類型沒有任何知識。有沒有一種方法可以按照升序排列第一列的網格,而不管網格填充了什麼數據?我不認爲我可以使用CollectionViewSource
,因爲我不知道綁定到第一列的屬性PropertyName
。初始DataGrid排序
我有一個用戶控件,其中包含一個WPF工具包DataGrid
。此控件在我的應用程序的許多不同的地方使用。網格對於將顯示的數據類型沒有任何知識。有沒有一種方法可以按照升序排列第一列的網格,而不管網格填充了什麼數據?我不認爲我可以使用CollectionViewSource
,因爲我不知道綁定到第一列的屬性PropertyName
。初始DataGrid排序
你可以掛鉤一個事件:
dataGrid.AutoGeneratedColumns += dataGrid_AutoGeneratedColumns;
和排序的第一列:
void dataGrid_AutoGeneratedColumns(object sender, EventArgs e)
{
var firstCol = dataGrid.Columns.First();
firstCol.SortDirection = ListSortDirection.Ascending;
dataGrid.Items.SortDescriptions.Add(new SortDescription(firstCol.SortMemberPath, ListSortDirection.Ascending));
}
我會建議你創建一個派生單獨DataGrid
控制,將這樣的邏輯存在,並使用新的控制,以避免每次重複代碼。
public class CustomDataGrid : DataGrid
{
public DynamicDataGrid()
{ ... }
...
}
感謝您的回答。第一列現在指示數據按該列進行排序,因爲排序方向指示器顯示在該列上,但直到實際點擊列時數據仍然未排序。 – ihatemash
你是對的,我忘了將SortDescription添加到集合中,我更新了代碼,它現在應該可以工作。 – doblak
如果該列不是自動生成的列,那麼在爲目標DataGrid設置DataContext後,您仍然可以使用dataGrid_AutoGeneratedColumns中的代碼。 – laishiekai