Blog archívum - függő tulajdonságok

  1. bevezetés
  2. Terjedelme változó
  3. kiteszik magic
  4. Hogyan hozzunk létre függő tulajdonságok
  5. Függő csak olvasható tulajdonságok
  6. Beágyazott függő tulajdonságok
  7. Változásainak nyomon követése a függő tulajdonságok
  8. Hogyan tisztítható a helyi változó

Amikor elkezdi fejleszteni a WPF alkalmazást, akkor hamarosan befut a „Függő Properties» (DepedencyProperties). Ők gyakorlatilag ugyanaz, mint a normál .NET tulajdonságait, de a koncepció sokkal összetettebb és több funkciós.

A fő különbség abban rejlik, hogy a változó a szokásos .NET ingatlan olvasni egy saját osztály tagja, míg ez az úgynevezett DependencyProperty dinamikusan, ha hívja a getValue (), ami viszont örökölt DepedencyObject.

Ha meg egy értéket a függő tulajdonság, nem tárolja a területén a tárgyat, és tárolja a szótárban kulcsokat és értékeket, amelyet a bázis osztály DependencyObject. Bevezetett a kulcs a tulajdonság nevét, és a változó értékét, hogy a telepíteni kívánt.

Előnyök függő tulajdonságok:

Tárolás területén minden tulajdonság egy hatalmas erőforrások pazarlását, különösen, ha úgy gondolja, hogy több mint 90% -át a felhasználói felület általában marad az eredeti állapot. Függő tulajdonságok megoldja ezt a problémát tárolása csak a megváltozott tulajdonságait. Az értékek az „alapértelmezett” csak egyszer kerül tárolásra.

Amikor meglátogat egy függőségi tulajdonság értéke a bizonyos technikák alkalmazásával. Ha a helyi érték nincs beállítva még függő tulajdonság felmegy a logikai fa, amíg nem talál ezt az értéket. Ha beállítja a fontsize opció a gyökér (legfelső szintű elem), a paraméter automatikusan hozzárendelve az összes szövegdobozok az alsó szintre, kivéve azokat, amelyeket manipulálhatók.

Függő ingatlan beépített mechanizmust bekövetkező változások bejelentése. A regisztráció során a visszahívás (callback) a metaadatok, tudni fogja, ha az értéke, vagy az ingatlan megváltozott. Ez a mechanizmus is használható, ha egy adat-összerendelést.

Terjedelme változó

Minden alkalommal, amikor elérheti a függőség a tulajdonságok, automatikusan kiválasztja a fontossági sorrend alapján - a magas vagy alacsony. Azután a helyi érték rendelkezésre áll-e vagy sem. Ha nincs (felhasználói stílus kiváltó aktív), ... ezt az eljárást ismételten elvégezni az értéket találtuk. Ha az érték „default” áll rendelkezésre minden alkalommal.

Blog archívum - függő tulajdonságok

kiteszik varázslat ...

Minden regisztrációhoz WPF-szabályzót függő tulajdonságok osztály Függőség ingatlan. Mindegyikük áll kulcsot, amely egyedinek kell lennie a típus; és metaadatokat tartalmazó visszahívás és alapértelmezett értékeket.

Minden fajta felhasználásával DependencyProperties kell örökölt Függőség Object. Ez alap osztály határozza meg a kulcsot és az értéket a szótár, amely magában foglalja a helyi értékek függő tulajdonságait. Ie input kulcs a megadott kulcs függőségi tulajdonság.

Amikor belép a függőség a tulajdonságokat a borítás tulajdonságait .NET, az úgynevezett getValue (DependencyProperty) eléréséhez az értéket. Ez a módszer kapja az értéket a bemutatott eljárással az alábbi képen. Ha a rendelkezésre álló egy helyi változó, elolvassa nélkül közvetlenül szótárban. Ha a változó hiányzik, akkor felmegy a logikai fa és keres egy örökölt érték. Ha az érték nem található, tart az alapértelmezett értéket megadott metaadat tulajdonságait. Ez a szekvencia egy kicsit egyszerűsített, de azt mutatja, az alapvető koncepciója a mechanizmus működik.

Blog archívum - függő tulajdonságok

Hogyan hozzunk létre függő tulajdonságok?

Ahhoz, hogy hozzon létre egy függő tulajdonság, adjunk hozzá egy statikus mező típusú DependencyProperty a stílus és a hívás DependencyProperty.Register () függvény egy példányának létrehozásához egy függő tulajdonságait. Név függő tulajdonságok mindig végződnek ... ingatlan. Így az Egyezményben előírt, vonatkozó neve WPF.

Annak érdekében, hogy hozzá lehessen férni, mint egy normál .NET tulajdon, akkor létre kell hozni egy wrapper az ingatlan. Ez a wrapper nem csinál semmit, de fogadni és beállítja az értékét a GetValue () függvény és a setValue (), örökölt DependencyObject és továbbít egy függőségi tulajdonság - DependencyProperty kulcsfontosságú.

[Fontos]: Ne adjon logikát ezek a tulajdonságok, mert csak egyszer érvényesíthetők, csak akkor, ha meghatározott tulajdonsága a kódot. Ha az ingatlant a XAML, setValue () metódus közvetlenül.

Ha ön használ egy fejlesztői környezetben VisualStudio, kinyomtathatja «propdp», és kattintson duplán a TAB billentyűt. hogy hozzon létre egy függő tulajdonság.

Minden függőség ingatlan felszerelt visszahívási funkció céljára értesítési lehetőségeket, megtartása érték vagy ellenőrzés.

Change Notification érték (callback)

Change Notification érték egy statikus módszer, az úgynevezett minden alkalommal, amikor az érték TimeProperty. Az új érték kerül átvitelre EventArgs; Az objektum, amely megváltoztatta az értéket továbbítjuk, mint a forrás.

Retenciós idő értékeket (visszahívás)

Erőltetett visszahívás segítségével állítsa be az értéket, ha a tartományon kívül van, kivétel nélkül. Jó példa erre a töltési sáv, amelynek értéke lehet állítani a minimális vagy a maximum felett. Ebben az esetben tudjuk kényszeríteni az értéket keretein belül. Ez a kijelző mutatja, hogyan állítsa be a határidőt annak érdekében, hogy az idő a múltban.

Check-értékeket (callback)

Segítségével vizsgálati értékek helyességét, akkor ellenőrizze, hogy az érték érvényes. Ha hamis értékkel tér vissza, akkor dobjon kivételt ArgumentException. Ebben a példában megköveteli, hogy az adatok nem kivétel DateTime.

Függő tulajdonságok csak olvasható

Néhány függő tulajdonságok WPF kontrollok csak olvasható. Gyakran használják állapotának megfigyelésére az ellenőrzés. Például IsMouseOver tulajdon. Nincs szükség, hogy bármilyen értéket az ingatlan.

Talán kérdezd meg magadtól, miért nem használja a normál .NET ingatlan? Az egyik fő oka az, hogy nem lehet beállítani a ravaszt normális .NET tulajdon.

Létrehozása, telkek, csak olvasható hasonló létrehozására közönséges DependencyProperty.Insted. Ahelyett, hogy DependencyProperty.Register () hívja DependencyProperty.RegisterReadonly (). Ez hozza meg DependencyPropertyKey. Ez a kulcs kell tárolni egy privát vagy védett statikus, csak olvasható, az osztály területén. A legfontosabb hozzáférést biztosít a beállítási értéket belül az osztály, és tudod használni, mint egy normális függőség tulajdon.

A második dolog, amit meg kell tennie, hogy regisztráljon egy nyilvános függőségi tulajdonság, amely a tervek szerint DependencyPropertyKey.DependencyProperty. Ez a tulajdonság csak olvasható, a jelenléte a külső hozzáférést.

csatolt tulajdonságok

Csatolt tulajdonságok speciális fajtája DependencyProperty. Ezek lehetővé teszik, hogy meghatározza az értéket egy tárgy, amely nem tud semmit ez az érték.

Egy jó példa egy panel helymeghatározó mechanizmust. Mindegyik panel igényel a különböző adatok, a képesség, hogy igazodjon a gyermek elemek. Munkafelület (Canvas) szükséges paraméterek és bal felső sarokban. Csatolt táblák kötelező paraméter Dock, stb Végül, írhat a saját panel elrendezés elrendezés, a lista végtelen. Látod, lehetetlen, hogy ugyanolyan tulajdonságokkal minden WPF ellenőrzéseket.

Ezt a problémát meg lehet oldani a beágyazott tulajdonságait. Ők határozzák meg az elemek, amelyek viszont megkövetelik az adatok más elemeket egy adott helyzetben. Például, egy elem van igazítva, hogy a szülő panel.

Ahhoz, hogy az értéket a csatolt ingatlan, adjuk hozzá a XAML attribútumot előtag elemet, amely egy csatolt tulajdonság. Ahhoz, hogy a tulajdonságokat és Canvas.Top Canvas.Left gomb van egy sorban a munkafelületet. Írhatsz:

Változások követése függő tulajdonságok

Ha azt szeretnénk, hogy nyomon kövesse a függőségi tulajdonság, öröklik a típus, amely meghatározza az ingatlan, majd felülírja a tulajdonság metaadatok és adja át a visszahívási - PropertyChangedCallback (). Azonban sokkal könnyebben kap DependencyPropertyDescriptor és csatlakoztassa visszahívási segítségével AddValueChanged () hívást.

Hogyan tisztítható helyi ügy?

NULL - is megfelelő helyi értéket. Eszerint van egy állandó DependencyProperty.UnsetValue, amely leírja egy meghatározatlan érték.

Kapcsolódó cikkek