Kategorie szkoleń | Egzaminy | Kontakt
  • 3
  • 2
  • 89

Witajcie, wśród atrybutów kontrolek w WPF-ie przewijają się takie które wykorzystują:

 

x:Key="..."

 

Oraz takie wymagające:

 

x:Name="..."

 

Jaka jest różnica i jak wywnioskować, którego atrybutu użyć przy danej kontrolce?

Maciej_Krauze
  • Zapytał
  • @ Maciej_Krauze | 22.02.2015
    • lider
    • laureat
    • 45
    • 16
    • 58
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedzi (3)

  • 2
  • Odpowiedział
  • @ | 22.02.2015
  • TRENER ALTKOM AKADEMII
  • 1

Istotnie, wcześniej była omawiana różnica pomiędzy Name i x:Name. Natomiast mnie chodzi o x:Key używany np. w stylach:

 

<SolidColorBrush x:Key="ClientIDBrush" Color="Purple" x:Name="nazwaStylu"/>

 

Pomimo że mam obie właściwości, mogę przypisać styl tylko po x:Key:

 

<Grid Background="{StaticResource ClientIDBrush}">

 

Z czego to wynika?

Maciej_Krauze
  • Odpowiedział
  • @ Maciej_Krauze | 22.02.2015
    • lider
    • laureat
    • 45
    • 16
    • 58
Komentarze
Przy okazji znalazł Pan odpowiedź na pierwsze pytanie - w kontrolkach stosujemy Name, a w słownikach zasobów Key. Więcej szczegółów poniżej.
Skomentował : @ TRENER ALTKOM AKADEMII ,23.02.2015
  • 9

Style definiowane są w słownikach zasobów na poziomie lokalnym (np. kontrolki, panelu czy kontenera), aplikacji lub w zwnętrznych słownikach zasobów.
W XAML-u jest to realizowane przez element Resources:

 

    <Application.Resources>
        <SolidColorBrush x:Key="BackgroundBrush" Color="#FFBF2C2C"/>
    </Application.Resources>

 

Element Resources odpowiada deklaratywnemu odwołaniu do instancji klasy ResourceDictionary. Klasa ta jest słownikiem, a więc przechowuje pary klucz - wartość, co bezpośrednio wyjaśnia dlaczego element x:Key jest wymagany w kolekcji Resources. Przy okazji jasnym staje się, dlaczego x:Name jest niewskazane w przypadku takich zasobów - przeszukiwanie po nazwie (czyli jednym z atrybutów) obiektu w słowniku byłoby nieefektywne - znacznie szybciej zlokalizujemy zasób po kluczu. Należy przy tym pamiętać, że przeszukiwanie słowników może uwzględniać słownik lokalny, aplikacyjny oraz słowniki zewnętrzne.

 

  • Odpowiedział
  • @ | 23.02.2015
  • TRENER ALTKOM AKADEMII
Komentarze
Dziękuję za odpowiedź. Teraz wszystko jest jasne.
Skomentował : @ Maciej_Krauze ,23.02.2015
  • 45
  • 16
  • 58