Blog
Blog HelionBlog HelionBlog HelionBlog Helion
  • Artykuły
  • Autorzy
  • Recenzje
  • Konkursy

Optymalny layout w XAML-u — zestaw porad

    Blog.helion.pl Artykuły Optymalny layout w XAML-u — zestaw porad
    NastępnyPoprzedni

    Optymalny layout w XAML-u — zestaw porad

    By Jerzy Piechowiak | Artykuły, Programowanie | Brak komentarzy | 3 lutego, 2017 | 3

    Język znaczników XAML na pozór nie wydaje się popularną technologią, z drugiej strony jest filarem większości aplikacyjnych rozwiązań giganta z Redmond, które korzystają z warstwy UI. W praktyce poszczególne wdrożenia są do siebie bardzo zbliżone i nie ma większego problemu w nauce Xamarina, jeśli wcześniej poznaliśmy WPF.

    Pisanie XAML-a może być bardzo przyjemne, ale jak wszystko w życiu, i to można łatwo zepsuć, tworząc zagmatwany i nieoptymalny kod. Pułapek w tej technologii jest bardzo dużo, dlatego warto poznać kilka zasad czy porad, które pozwolą na tworzenie zgrabniejszego i szybszego kodu.

    Tekst jest pisany z perspektywy ogólnej — bez fiksowania się na konkretnym wdrożeniu języka XAML.

     

     

    Poprawne stosowanie wartości domyślnych

     

    Każda właściwość używana w XAML-u ma swoją wartość domyślną. Jeśli np. stosujemy układ Grid, każdy element wewnątrz ma domyślnie ustawione właściwości:

     

    Grid.Column=„0” i Grid.Row=„0″

     

    Dlatego nie musimy ich w tym przypadku zapisywać ponownie, gdy element jest umieszczony w pierwszym wierszu i (lub) pierwszej kolumnie. Podobnie jest przy innych właściwościach.

     

    Oprócz zwiększenia czytelności zapisu to podejście ma jeszcze drugi skutek. Taki XAML będzie po prostu szybszy, ponieważ nie będziemy nadpisywać bindowanych wartości.

     

     

    Spłaszczenie układu

     

    Tworząc layouty w XAML-u, często ulegamy pokusie stworzenia rozbudowanych, wielokrotnie zagnieżdżonych układów. To, co na pozór wydaje się bardziej eleganckie, w praktyce może doprowadzić do znacznego spowolnienia naszej aplikacji, zwłaszcza jeśli taki układ jest zastosowany jako element listy.

     

    Wiele przypadków można rozwiązać, stosując po prostu inny rodzaj układu; np. wielokrotnie zagnieżdżone StackPanele możemy zastąpić jednym układem typu Grid.

     

    Przykładowy układ zbudowany na StackPanelach:

    <StackPanel>
    	<StackPanel Orientation="Horizontal">
    		<TextBlock Text="a" />
    		<TextBlock Text="b" />
    	</StackPanel>
    	<StackPanel Orientation="Horizontal">
    		<TextBlock Text="c" />
    		<TextBlock Text="d" />
    	</StackPanel>
    </StackPanel>
    

     

    Wersja na Gridzie:

     

    <Grid>
    	<Grid.RowDefinitions>
    		<RowDefinition />
    		<RowDefinition />
    	</Grid.RowDefinitions>
    	<Grid.ColumnDefinitions>
    		<ColumnDefinition Width="Auto" />
    		<ColumnDefinition Width="Auto" />
    	</Grid.ColumnDefinitions>
    	<TextBlock Text="a" />
    	<TextBlock Text="b" Grid.Column="1" />
    	<TextBlock Text="c" Grid.Row="1" />
    	<TextBlock Text="d" Grid.Row="1" Grid.Column="1" />
    </Grid>
    

     

     

    Używaj StackPanela zamiast Grida

     

    Czasem możliwe jest zastąpienie Grida kontrolką typu StackPanel, w sytuacji gdy Grid jest stosowany tylko do tworzenia kolejnych wierszy lub kolumn. W takim przypadku nie tylko uzyskamy czytelniejszy zapis, ale również użyjemy kontrolki, która mniej obciąża zasoby.

     

    Przykładowy układ zapisany w Gridzie:

     

    <Grid>
    	<Grid.RowDefinitions>
    		<RowDefinition />
    		<RowDefinition />
    		<RowDefinition />
    	</Grid.RowDefinitions>
    	<TextBlock Text="a" />
    	<TextBlock Text="b" />
    	<TextBlock Text="c" />
    </Grid>
    

     

    można zastąpić prostym StackPanelem, który domyślnie korzysta z orientacji wertykalnej:

     

    <StackPanel>
    	<TextBlock Text="a" />
    	<TextBlock Text="b" />
    	<TextBlock Text="c" />
    </StackPanel>
    

     

     

    User Control vs templated control

     

    Niektóre implementacje XAML-a pozwalają na stosowanie kontrolek użytkownika napisanych w XAML-u oraz tzw. templated controls. Istnieje kilka istotnych różnic pomiędzy tymi wariantami, ale jedną z najważniejszych jest wydajność. W przypadku templated controls szablon kontrolki jest parsowany tylko raz — niezależnie od liczby instancji tej kontrolki.

     

     

    Nie zagnieżdżaj scrolla w scrollu

     

    Niektóre kontrolki, takie jak listy, mają wbudowany wewnętrznie scroll, który pozwala na przewijanie ich zawartości. W tym przypadku nie powinniśmy wrzucać takich kontrolek wewnątrz kontrolki scrolla, ponieważ zepsuje to wirtualizację wbudowaną w kontrolkę listy.

     

     

     

    Jerzy Piechowiak

    Altcontroldelete.pl

     


    Szukasz informacji? Kliknij poniżej:

         

    Jerzy Piechowiak, programowanie, WPF, xaml
    Avatar

    Jerzy Piechowiak

    Więcej postów od Jerzy Piechowiak

    Podobne posty

    • Przykładowa implementacja MVVM z MVVM Light w WPF

      By Jerzy Piechowiak | Brak komentarzy

      Choć domyślnie aplikacje WPF piszemy z wykorzystaniem code-behind, to nie ma technologicznych przeciwwskazań do zastosowania w tym przypadku wzorca MVVM, do którego ta technologia jest również częściowo przystosowana. Tak naprawdę największa zmiana musi zajść wCzytaj więcej…

    • Nie bój się refaktoryzacji!

      By Jerzy Piechowiak | Brak komentarzy

      Bardzo często w tytułach książek dla programistów można znaleźć określenia typu: „piękny kod”, „czysty kod”, „kod doskonały”, sugerujące, że możliwe jest napisanie programu, którego kod źródłowy jest po prostu idealny. Ale co właściwie znaczy to,Czytaj więcej…

    • Ninject — ciekawa alternatywa dla Autofaca

      By Jerzy Piechowiak | Brak komentarzy

      W poprzednim poście starałem się przedstawić podstawowe różnice między trzema głównymi sposobami rejestracji usług dostępnymi w Autofacu. Kontener ten oferuje szerokie możliwości, dobre czasy „wyciągania” usług, ma także grono wiernych użytkowników. Jednak jeśli spojrzymy na statystykiCzytaj więcej…

    • Autofac — różne sposoby rejestracji usług

      By Jerzy Piechowiak | 2 komentarze

      Gdy dobrych kilka lat temu zaczynałem programować w C#, nie miałem pojęcia o czymś takim jak kontener IoC. Każdy obiekt tworzyłem klasycznie — poprzez zastosowanie słowa kluczowego new: StringBuilder sb = new StringBuilder();

    • C# — poprawna implementacja interfejsu IDisposable

      By Jerzy Piechowiak | 1 komentarz

      C# jest językiem wysokiego poziomu, w którym przygotowano liczne gotowe komponenty i usprawnienia, jakich nie znajdziemy u konkurencji. Takie podejście ma sporo zalet, ponieważ nie musimy przejmować się wieloma rzeczami, które w innych językach musielibyśmyCzytaj więcej…

    NastępnyPoprzedni

    Znajdź post

    Bądźmy w kontakcie

    Książka dnia

    C#. Lekcje programowania. Praktyczna nauka programowania dla platform .NET i .NET Core

    Autor: Jacek Matulewski

    Cena: 83.30 zł 119.00 zł
    (Cena e-booka: zł zł)

    O 36zł taniej!

    kup teraz

    Najnowsze wpisy

    • Błyskawiczny kurs pisania skryptów powłoki
    • Przykładowa aplikacja webowa zaimplementowana w ASP .NET Core
    • Wprowadzenie do .NET Core: instalacja, konfiguracja, pierwsza aplikacja w systemie Linux
    • Grupa Helion zaprasza na szkolenia stacjonarne!
    • Hello World! Czym jest programowanie?

    Tagi

    .net agile altcontroldelete asp.net c# czysty kod debugowanie design patterns e-biznes emarketing Google Google Analytics hacking Jerzy Piechowiak kod kodowanie Krzysztof Marzec książka Maciej Dutko magazyn programista Magdalena Daniłoś marketing MVVM onepress organizacja czasu praca prograista programista programowanie prokrastynacja rafał kocisz reklama rozwój software craftsman SOLID startup techniki programowania testowanie video marketing visual studio WPF wzorce projektowe youtube zarządzanie czasem zarządzanie projektami

    Archiwum

    • Lipiec 2017
    • Czerwiec 2017
    • Maj 2017
    • Kwiecień 2017
    • Marzec 2017
    • Luty 2017
    • Styczeń 2017
    • Grudzień 2016
    • Listopad 2016
    • Październik 2016
    • Wrzesień 2016
    • Lipiec 2016
    • Czerwiec 2016
    Blog wydawnictwa
    Informatyka w najlepszym wydaniu
    Strona wydawcy:
    www.helion.pl
    Księgarnia Helion.pl
    Nowości
    Bestsellery
    Promocje
    Bądźmy w kontakcie:
    Chcesz zostać autorem?
    Masz pytania do redakcji?
    Napisz do nas »
    • Artykuły
    • Autorzy
    • Recenzje
    • Konkursy
    Blog Helion