Diskuze: Kombinací jakých prvků udělat podobnou tabulku, WPF
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, Na tabulku bych použil klasický Grid, který si vygeneruješ v codebehindu pomocí 2 forů (13 RowDefinitionů s Height="*" a 13 ColumnDefinitionů s Width="*"). Dále si vytvoříš to, co budeš v tabulce zobrazovat. Nejjednodušší přístup by podle mě bylo udělat si UserControl. Bude tam border a canvas, do kterého budeš pomocí rectanglů a textblocku vykreslovat to procentuální zastoupení a vypisovat jméno buňky. UserControl bude mít nějakou vlastnost, ze které si přečte, jak se má vykreslit. Dejme tomu nějakou třídu, např. CellItem, kde bude přesně zapsáno, jak se má co zobrazit. Tuto vlastnost pak budeš bindovat do usercontrolu, aby se korektně vykreslil, a tyto UserControly pak zobrazíš v tabulce. Asi by bylo nejlepší uchovávat je v nějaké kolekci, navrhuji ObservableCollection<ObservableCollection<CellItem>>.
Ještě se doplním s tím vykreslováním. Nejprve bys asi vykreslil ty čtyři rectangly (tm. zelený, zelený, žlutý, červený) se stejnou výškou (celá výška canvasu), ale různou šířkou podle procent. A pak bys přes ně vykreslil ten šedý, s celou šířkou canvasu a výškou podle výskytu (výška canvasu * (1 - hodnota výskytu)). Přes to celé textbox. A vykreslovací metoda by měla být zavolána pokaždé, když nastane na canvasu event size changed, aby vše souhlasilo, jak má. Nezapomeň mu dát stejnou minimální výšku a šířku.
Tedy, ve třídě CellItem bude 5 vlastností, typ asi double, které ponesou jednotlivá procentuální zastoupení.
Stáhni si komponenty Developer Express(www.devexpress.com). Tam je m.j. aspxGridView, což je geniální věc na všechny gridy. Dovede i uvnitř zobrazovat level meter, jak chceš. Ale umí toho daleko více. Je to kompletní suite, s níž jsem měl nárůst výkonnosti o 400%. To snad nepotřebuje komentář.
Jojo nakonec jsem to udelal pomoci gridů v gridu v bunce gridu Ale mrknu Rectangly jsou taky řešení, problém nastává, že jsem je musel řadit do panelu a tím pádem se tabulka rozpadala když jsem ji zvětšil
Určo na to mrknu Díky
Zobrazeno 6 zpráv z 6.