Mam tam siatkę danych Silverlight Toolkitkolumna pokazuje tekstową reprezentację wartości liczbowej. Chciałbym posortować według wartości liczbowej kolumny, ale przedstawić użytkownikowi dane tekstowe. Wartości w kolumnie siatki mają format taki jak:
- Kategoria A (200–300)
- Jakaś kategoria (100-200)
- Jeszcze inna kategoria (300–400)
Ponieważ te wartości są tekstowe, siatka poprawnie sortuje tekst, jednak mam niestandardowy moduł porównujący, który może już sortować je według kategorii liczbowych i chciałby podłączyć je do siatki.
Obiekt danych, z którym wiąże się komórka siatki, ma jedynie reprezentację tekstową (i nie ma możliwości łatwego dodania wartości liczbowej). Dlatego SortMemberPath = nie będzie działać w tym przypadku.
Czy można wstrzyknąć niestandardowy moduł porównujący dlapojedyncza kolumna siatki i sortować według tego? A może zaimplementować CollectionViewSource za pomocą niestandardowego modułu porównującego? Pamiętaj, że to jest Silverlight, a nie WPF, więc brakuje niektórych pól / właściwości / klas w porównaniu z WPF.
Odpowiedzi:
1 dla odpowiedzi № 1Najprostszym sposobem na osiągnięcie tego jest dodaniedwie właściwości do encji, którą wiążesz z siatką, jedna to tekst, a druga może być liczbowa i wiązać tylko jedną z kolumną siatki, a drugą można użyć w SortMemberPath. Jeśli nie są to dwie właściwości, które chcesz zachować w encji, możesz zachować tylko wartość liczbową i użyć konwertera, aby przekonwertować ją na tekst, a SortMemberPath = NumericPropertyName.