我最近一直在用 WinUI 3 撰寫一個業余專案,但遇到了一些麻煩。
在我的應用程式中,我有一個GridView在 XAML 中系結到 的ObservableCollection,如 WinUI 檔案中所推薦的。這很好用,但現在我需要能夠對 中的專案進行排序和過濾,GridView目前還不清楚最“正確”或最慣用的方法是什么。
谷歌搜索顯示 WPF 有一些功能CollectionViewSource可以處理這個問題,但這些似乎已在 WinUI 中洗掉。
目前,我發現唯一可行的方法是洗掉 XAML 系結,將 更改ObservableCollection為 a List,然后在用戶排序時,手動將GridView的源null設定為,然后將源設定為List. 如果我沒記錯的話,這會破壞虛擬化GridView,所以這似乎不是我應該做的。
我將不勝感激對此的任何見解。
uj5u.com熱心網友回復:
在 WinUI 中,您應該對源集合進行排序,即ObservableCollection<T>,您自己。
這是BubbleSort來自此處的修改(且未經測驗)的方法,應該會派上用場:
public static class ObservableCollectionExtensions
{
public static void BubbleSort<T>(this ObservableCollection<T> o) where T : IComparable
{
for (int i = o.Count - 1; i >= 0; i--)
for (int j = 1; j <= i; j )
{
IComparable o1 = o[j - 1];
IComparable o2 = o[j];
if (o1.CompareTo(o2) > 0)
o.Move(j - 1, j);
}
}
}
用法::
someObservableCollection.BubbleSort();
uj5u.com熱心網友回復:
我不確定這種 UWP 排序方法是否與 WinUI 3 完全兼容,因為我還沒有嘗試過。但是 Contoso 訂單示例https://github.com/microsoft/Windows-appsample-customers-orders-database有一些示例代碼,當從 Datagrid 觸發排序事件時,這些代碼會更改 Datagrid。請參閱 Views 檔案夾中的 DataGridHelper。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382173.html
標籤:C# xaml .net-6.0 winui-3 windows-app-sdk
