WPF, azonosítási és nyilvántartási függőség a tulajdonságok

WPF --- Basis WPF --- meghatározása és regisztrációs tulajdonságoktól függően

Függőség tulajdonságait kell létrehozni sokkal ritkább, mint használni. Vannak azonban olyan sok oka van, hogy saját függőségi tulajdonság. Nyilvánvaló, hogy ők lesznek a fő összetevője létre egyedi WPF elem. De szüksége lesz, és ha kell hozzá adat kötelező, animáció, vagy valamilyen más lehetőséget a WPF-kód, amely egyébként nem lenne képes, hogy támogassa őket. Készítsen egy függőségi tulajdonság nem nagyon nehéz, de meg kell szokni, hogy a szintaxis. Ez teljesen eltér a szokásos szintaktikai tulajdonságait .NET.

Függőségi tulajdonságokat lehet adni csak a tárgy függőségek - osztályok generált DependencyObject. Szerencsére a legtöbb kulcsfontosságú összetevője a WPF infrastruktúra közvetve származó DependencyObject. A legnyilvánvalóbb példa erre az a generáció elemekkel.

Először meg kell határoznia egy objektumot, amely képviseli az ingatlan. Ez egy példánya DependencyProperty osztályban. Az ingatlan információt hozzáférhetővé kell tenni folyamatosan, és talán még más osztályokba (szokás WPF elemek). Emiatt DependencyProperty objektumot kell meghatározni, mint egy statikus mező egy kapcsolódó osztályban.

Például FrameworkElement osztály határozza ingatlan álló mozgástér az összes elemet. Természetesen Margin - egy függőségi tulajdonság. Ez azt jelenti, hogy meghatározott osztályba FrameworkElement az alábbiak szerint:

Úgy egyeztünk, hogy a mező képviselő függőségi tulajdonság neve a szokásos tulajdonságok, kiegészítve a szó Property a végén. Így lehetséges, hogy külön a meghatározása a tulajdon alapján a neve maga az ingatlan. Mező határozza meg a kulcsszó csak olvasható -, ami azt jelenti, hogy annak értéke csak akkor lehet beállítani a statikus konstruktor a FrameworkElement osztályban, de ez a következő lépés.

Regisztráció függőségi tulajdonság

Meghatározása DependencyProperty objektum csak az első lépés. Annak érdekében, hogy tudod használni, akkor be kell regisztrálni egy függőségi tulajdonság WPF. Ezt meg kell tenni, hogy ezt a tulajdonságot a kódot, így a definíció kell tenni egy statikus konstruktor a kapcsolódó osztályban.

WPF biztosítja, hogy DependencyProperty tárgyak nem jön létre, közvetlenül DependencyProperty osztályban nincs nyilvános kivitelező. DependencyProperty például csak akkor jöhet létre a statikus módszer DependencyProperty.Register (). WPF garantálja, hogy lehetetlen a változás DependencyProperty tárgyak elkészítésük után, mint minden tagja a DependencyProperty csak olvashatók, ezek az értékek meg kell adni formájában érvek a módszer Register ().

A következő kód egy példa, hogy létrehozza a DependencyProperty. Itt FrameworkElement osztály használ statikus konstruktor inicializálása MarginProperty:

Regisztráció függőségi tulajdonság végezzük két szakaszban történik. Először hozzon létre FrameworkPropertyMetadata objektumot, amely meghatározza, mely szolgáltatások a használni kívánt a függőségi tulajdonság (például az adatok kötelező támogatás, animáció, és a fakitermelés). Aztán regisztrált tulajdonság, ami miatt DependencyProperty.Register () metódust. Itt meg kell adnia néhány kulcsfontosságú összetevők:

tulajdonság neve (ebben a példában Margin);

adattípus felhasznált tulajdonság (ebben a példában Vastagság szerkezet);

típus, amely tartozik az ingatlan (ebben a példában FrameworkElement osztály);

FrameworkPropertyMetadata objektum tulajdonságai további paraméterekkel (opcionális);

visszahívás, amelyek alapján egy érvényesítési tulajdonságok (opcionális).

úgy tűnik, minden világos az első három összetevőt. Még érdekesebb a FrameworkPropertyMetadata tárgy és visszahívási ellenőrzést.

FrameworkPropertyMetadata objektum beállításához használt a képesség, hogy hozzon létre egy függőségi tulajdonság. A legtöbb FrameworkPropertyMetadata osztály tulajdonságait egy normális logika zászlók, amelyek meghatározott aktiválni ezeket a lehetőségeket (alapértelmezés szerint az összes ezeket a zászlókat hamis). De néhány közülük visszahívások, hogy pont az egyéni módszerekkel létrehozott speciális feladatok megoldására. Az egyik ilyen tulajdonságok - FrameworkPropertyMetadata.DefaultValue - állapítja meg az alapértelmezett értéket, amely akkor alkalmazható, amennyiben WPF eredeti inicializálás tulajdonságait. Az alábbiakban az összes olyan tulajdonságot FrameworkPropertyMetadata:

Osztály tulajdonságait FrameworkPropertyMetadata

AffectsArrange, AffectsMeasure, AffectsParentArrange, AffectsParentMeasure

Ha egy valódi érték, a függőségi tulajdonság befolyásolja a helyét a szomszédos elemek (vagy szülő) során a mérési fázis és fázis egyenesbe állító berendezés működése. Például az ingatlan függőség Margó köt AffectsMeasure értéke true - ez azt jelenti, hogy ha a területén elrendezési elemeket tartály kell ismételni a mérési lépés, hogy meghatározzuk egy új elhelyezést elemek

Ha ez igaz, akkor az ingatlan hatással lehet attól függően, hogy a megjelenése olyan elem, amely előírja, újrarajzolás

Ha ez igaz, akkor az ingatlan fogják használni attól függően, nem egyoldalú (alapértelmezett), és kétirányú adatforgalmat kötelező. Azonban, amikor létre kötődést, akkor egyértelműen meg kell határozni a viselkedését

Ha egy valódi érték, az érték az elosztott függően faelemek és lehet öröklött beágyazott elemeket. Például, egy öröklött tulajdonság függőség Font: ha meg azt, hogy egy elem a legmagasabb szinten, ez öröklődik beágyazott elemeket, hacsak kifejezetten felülírják a saját betűtípus-beállítások

Ha ez igaz, akkor az ingatlan nem lehet használni attól függően, animáció

Ha ez igaz, akkor az ingatlan értéke nem lehet beállítani függően kötelező erőt

Ha az értéke igaz, akkor a oldal kiegészítés függőségi tulajdonság értéket tárolja a log (történelem látogatott oldalak)

Ha egy valódi érték, a WPF nem hajtja végre dolgozza át a tárgyat, amikor annak egyik altulajdonsággal (tulajdonságot)

Ez beállítja az alapértelmezett érték az ingatlan Binding.UpdateSourceTrigger, ha az ingatlan a kötődési szempontjából. UpdateSourceTrigger tulajdonság határozza meg, amikor a változások a felső határérték. UpdateSourceTrigger ingatlan kézzel lehet beállítani létrehozásakor kötések

Ez beállítja az alapértelmezett érték tulajdonságok függvényében

Ez egy visszahívást, hogy megpróbálja „fix” az ingatlan értéke ellenőrzése előtt