2009-10-04 17 views
6

Oba stosują tę samą koncepcję: zdefiniuj niektóre wiersze i kolumny i dodaj treść do określonych pozycji. Ale Grid jest najczęstszym kontenerem układu WPF, natomiast układ tabel w html to very controversial. Dlaczego więc chwalony jest układ siatki WPF, a układ oparty na html jest uważany za "zły" (przez niektórych)?Czy układ oparty na siatce WPF nie jest taki sam, jak układ oparty na tabeli, który jest tabu w html?

+0

kto powiedział, że tabela jest "tabu" w HTML? Jeśli masz stół i wygląda jak stolik, czujesz się jak stół, znachorujesz jak stół - dlaczego nie renderować go przy stole? –

+2

marc_s: renderowanie danych tabelarycznych w tabeli nie jest tym samym, co błędne używanie tabel jako elementów układu. – Joey

Odpowiedz

10

Chodzi o to, że Grid w WPF jest zdefiniowany jako mechanizm układu, podczas gdy tabela w HTML służy do zaznaczania danych tabelarycznych, coś, co zwykle używasz DataGrid lub podobnego w WPF.

Problem z HTML pod tym względem nie polega na tym, że używasz tabel do układu. W rzeczywistości, CSS3 Template Layout Module nie jest tak bardzo różne. Problem polega na tym, że treść w tabelach nie ma struktury semantycznej i dlatego jest niedostępna dla czytników ekranu, wyszukiwarek i tym podobnych. One oczekują tabeli do przechowywania danych tabelarycznych, ponieważ każdy mechanizm układu graficznego nie ma sensu dla czegoś, co nie ma wzroku (takiego jak czytniki ekranu, roboty sieciowe lub niewidomi).

W WPF istnieją różne sposoby rozwiązania tego problemu. Po pierwsze, WPF jest przeznaczony do graficznego projektowania interfejsu użytkownika i jako taki jest bardzo zrootowany. To automatycznie implikuje pewne niedostosowanie dla osób niewidomych. Co więcej, roboty sieciowe tak naprawdę nie stanowią problemu (przez jakiś czas ignorują XBAP, do tej pory nie widziałem tych na wolności). Poza tym WPF współpracuje z istniejącymi technologiami ułatwień dostępu w systemie Windows, aby zapewnić, że czytniki ekranu mogą mieć sens w interfejsie użytkownika w taki sam sposób, jak w tradycyjnej aplikacji systemu Windows. Więc masz tu więcej meta-informacji o dostępności niż typowe dla HTML. Jedyną rzeczą dostępną na zewnątrz jest w pełni renderowana siatka. Nie pod tym znacznikiem, ale raczej szeregiem kontrolek, które są gdzieś na ekranie. I do tych samych zasad stosuje się tak samo jak do każdego innego okna.

Kolejnym punktem przeciwko tabelom układu w HTML jest miksowanie treści i prezentacji, co utrudnia zmianę tylko jednego z nich, a także utrudnia dotarcie do samej treści (podobnie jak powyższy problem dla czytników ekranu i roboty sieciowe). W WPF oba są już oddzielone (przez powiązanie danych) i można je rozdzielić jeszcze dalej, jeśli chcesz, budując niestandardowe elementy sterujące, aby zamknąć części układu, przeciągając łańcuchy i obrazy do zasobów, & c.

Podsumowując, HTML nie posiadał odpowiedniego mechanizmu do tworzenia złożonych i atrakcyjnych układów, a tabele były rozwiązaniem tego problemu (ze wszystkimi nieodłącznymi słabościami i problemami). Z drugiej strony WPF został zbudowany od podstaw z technikami i sposobami rozwiązania dokładnie tych niedociągnięć i są one w większości w rzeczywistości najlepszymi praktykami.

+0

Co naprawdę sprawia, że ​​myślisz: "Dlaczego HTML 5 nie utworzył nowego tagu' 'który zachowywał się * dokładnie * jak'

'i uratował całą społeczność programistów sieciowych przed ogromnymi bólami głowy?" –

+0

Cóż, jest tam, w pewnym sensie, z kilkoma bardziej zaawansowanymi układami CSS. Ale są one, jeśli w ogóle, obsługiwane tylko w najnowocześniejszych przeglądarkach, a nawet niekonsekwentnie w różnych przeglądarkach. Rzeczywiście, HTML jest nadal dość ubogim językiem (UI) w porównaniu do tych, które zostały specjalnie stworzone do tego celu. – Joey

+0

Myślę, że duża część tego ma związek z niezrozumieniem, czym naprawdę są przeszkody. Wiele firm lubi mieszanie danych z układem, ponieważ utrudnia to zeskrobywanie, ale nikt nie chce tego rozpoznawać, aby nadal realizować pomysły odrzucone w wielu praktycznych aplikacjach. Rezultaty są brzydkie. –

Powiązane problemy