Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A keretrendszertulajdonság metaadat-beállításait a Windows Presentation Foundation (WPF) keretrendszer szintjén állíthatja be a függőségi tulajdonságokhoz. A WPF keretrendszerszint-megjelölés akkor érvényes, ha a WPF-bemutató API-k és a végrehajtható fájlok kezelik a renderelést és az adatkötést. A bemutató API-k és a végrehajtható fájlok lekérdezik a függőségi tulajdonság „FrameworkPropertyMetadata”-t.
Előfeltételek
A cikk feltételezi a függőségi tulajdonságok alapszintű ismeretét, és hogy elolvasta függőségi tulajdonságok áttekintését. A cikkben szereplő példák követéséhez segít, ha ismeri az Extensible Application Markup Language (XAML) nyelvet, és ismeri a WPF-alkalmazások írásának módját.
Keretrendszertulajdonság metaadatainak kategóriái
FrameworkPropertyMetadata az alábbi kategóriákba sorolhatók:
Az elemek elrendezését befolyásoló metaadatok, különösen a AffectsArrange, AffectsMeasureés AffectsRender metaadat-jelzők. Ez a jelölőket akkor állíthatja be, ha a függőségi tulajdonság implementálása hatással van a vizuális megjelenítésre, és az osztályában implementálja a MeasureOverride vagy ArrangeOverride jelöléseket. A
MeasureOverrideésArrangeOverridemetódusok implementációspecifikus viselkedést és renderelési információkat biztosítanak az elrendezési rendszer számára. Ha a függőségi tulajdonság metaadataiban aAffectsArrange,AffectsMeasurevagyAffectsRenderértéketrue-ra van állítva, és annak tényleges értéke megváltozik, a WPF tulajdonságrendszer kezdeményezni fogja az elem vizuális elemeinek érvénytelenítését az újrarajzolás érdekében.Az elemek szülőelemének elrendezését befolyásoló metaadatok, különösen a AffectsParentArrange és AffectsParentMeasure metaadat-jelzők. Példák a WPF függőségi tulajdonságaira, amelyek beállítják ezeket a jelzőket, FixedPage.Left és Paragraph.KeepWithNext.
A tulajdonságértékek öröklési metaadatai, különösen a Inherits és OverridesInheritanceBehavior metaadat-jelzők. Alapértelmezés szerint a függőségi tulajdonságok nem öröklik az értékeket. OverridesInheritanceBehavior lehetővé teszi, hogy az öröklési út egy vizuális fába is eljusson, ami bizonyos vezérlő összeállítási forgatókönyvekhez szükséges. További információ: Tulajdonságérték öröklése.
Megjegyzés:
A tulajdonságértékek kontextusában az "öröklődik" kifejezés a függőségi tulajdonságokra jellemző, és nem kapcsolódik közvetlenül a felügyelt kódtípusokhoz és a tagörökléshez származtatott típusok használatával. A függőségi tulajdonságok kontextusában ez azt jelenti, hogy a gyermekelemek örökölhetik a függőségi tulajdonság értékeit a szülőelemektől.
Adatkötési metaadatok, különösen a BindsTwoWayByDefault és IsNotDataBindable metaadat-jelzők. Alapértelmezés szerint a WPF-keretrendszer függőségi tulajdonságai támogatják az egyirányú kötést. Fontolja meg a kétirányú kötés alapértelmezett beállítását azon tulajdonságok esetében, amelyeknél a jelentés állapota és a módosíthatók felhasználói művelettel, például IsSelected. Érdemes lehet alapértelmezettként beállítani a kétirányú kötést is, ha egy vezérlő felhasználói egy tulajdonság implementálását várják, például TextBox.Text.
BindsTwoWayByDefaultcsak az alapértelmezett kötési módot érinti. A kötés adatfolyam-irányának szerkesztéséhez állítsa Binding.Mode. AzIsNotDataBindablehasználatával letilthatja az adatkötést, ha nincs rá használati eset. További információ az adatkötésekről: Adatkötések áttekintése.Metaadatok naplózása, különösen a Journal metaadat-jelző. A
Journaljelző alapértelmezett értéke csak bizonyos függőségi tulajdonságok esetébentrue, például SelectedIndex. A felhasználói beviteli vezérlőknek meg kell adni aJournaljelölőt azon tulajdonságok esetében, amelyek értékei tárolják a tárolni kívánt felhasználói kijelöléseket. AJournaljelzőt olyan alkalmazások vagy szolgáltatások olvassák, amelyek támogatják a naplózást, beleértve a WPF-naplózási szolgáltatásokat is. A navigációs lépések tárolásáról további információt a Navigáció áttekintése című témakörben talál.
FrameworkPropertyMetadata közvetlenül a UIPropertyMetadataszármazik, és implementálja az itt tárgyalt zászlókat. Ha nincs külön beállítva, FrameworkPropertyMetadata jelzők alapértelmezett értéke false.
Olvasás a FrameworkPropertyMetadata-ból
Egy függőségi tulajdonság metaadatainak lekéréséhez hívja meg GetMetadata a DependencyProperty azonosítóján. A GetMetadata hívás egy PropertyMetadata objektumot ad vissza. Ha le kell kérdeznie a keretrendszer metaadat-értékeit, alakítsa át PropertyMetadata-t FrameworkPropertyMetadata-re.
FrameworkPropertyMetadata megadása
Függőségi tulajdonság regisztrálásakor lehetősége van metaadatok létrehozására és hozzárendelésére. A hozzárendelt metaadat-objektum lehet PropertyMetadata vagy annak egyik származtatott osztálya, például FrameworkPropertyMetadata. Válassza a FrameworkPropertyMetadata olyan függőségi tulajdonságokhoz, amelyek WPF-bemutató API-kra, valamint renderelésre és adatkötésre használható végrehajtható fájlokra támaszkodnak. Egy fejlettebb lehetőség, ha FrameworkPropertyMetadata-ból származtat egy testreszabott metaadat-jelentési osztályt több jelzővel ellátott. Vagy használhat UIPropertyMetadata olyan nem keretrendszerbeli tulajdonságokhoz, amelyek befolyásolják a felhasználói felület renderelését.
Bár a metaadat-beállítások általában egy új függőségi tulajdonság regisztrálása során vannak beállítva, újra megadhatja őket OverrideMetadata vagy AddOwner hívásokban. A metaadatok felülbírálásakor mindig ugyanazzal a metaadattípussal kell felülbírálni, mint a tulajdonságregisztráció során.
A FrameworkPropertyMetadata által közzétett tulajdonságjellemzőket néha jelzőkneknevezik. Ha egy FrameworkPropertyMetadata-példányt hoz létre, kétféleképpen töltheti fel a jelzőértékeket:
Állítsa be a jelzőket a FrameworkPropertyMetadataOptions enumerálási típus egy példányán.
FrameworkPropertyMetadataOptionslehetővé teszi a metaadat-jelzők bitenkénti VAGY kombinációban történő megadását. Példányosítsa aFrameworkPropertyMetadata-t egyFrameworkPropertyMetadataOptionsparaméterrel rendelkező konstruktor használatával, és adja át aFrameworkPropertyMetadataOptionspéldányát. Ha módosítani szeretné a metaadat-jelzőket, miután átadtaFrameworkPropertyMetadataOptionsa FrameworkPropertyMetadata konstruktornak, módosítsa a megfelelő tulajdonságot az újFrameworkPropertyMetadata-példányon. Ha például a FrameworkPropertyMetadataOptions.NotDataBindable jelzőt állítja be, visszavonhatja azt úgy, hogy FrameworkPropertyMetadata.IsNotDataBindablefalseértékre állítja.Példányosítsa a(z)
FrameworkPropertyMetadata-t olyan konstruktorral, amely nem rendelkezikFrameworkPropertyMetadataOptionsparaméterrel, majd állítsa be a vonatkozó Boolean jelzőket a(z)FrameworkPropertyMetadata-ra. Állítsa be a jelölőértékeket, mielőtt függőségi tulajdonsággal társítja aFrameworkPropertyMetadata-példányt, különben InvalidOperationExceptionkap.
Metaadatok felülbírálásának viselkedése
A keretrendszertulajdonság metaadatainak felülbírálásakor a módosított metaadat-értékek lecserélik vagy egyesülnek az eredeti értékekkel:
Egy PropertyChangedCallbackesetében az alapértelmezett egyesítési logika megtartja a tábla korábbi
PropertyChangedCallbackértékeit, és a rendszer mindet meghívja egy tulajdonságmódosítás során. A visszahívási sorrendet az osztálymélység határozza meg, ahol a hierarchiában az alaposztály által regisztrált visszahívás fut először. Az örökölt visszahívások csak egyszer futnak le, és annak az osztálynak a tulajdonai, amelyik felvette őket a metaadatokba.Egy DefaultValueesetében az új érték felülírja a meglévő alapértelmezett értéket. Amennyiben nem adsz meg
DefaultValue-t a felülíró metaadatokban, és a meglévő FrameworkPropertyMetadata rendelkezik aInheritsjelzővel, akkor az alapértelmezett érték a legközelebbi olyan elődtől származik, amely megadtaDefaultValue-at a metaadatokban.Egy CoerceValueCallbackesetében az új érték lecserél egy meglévő
CoerceValueCallbackértéket. Ha nem ad megCoerceValueCallbacka felülbírálási metaadatokban, az érték aCoerceValueCallbackmegadott öröklési lánc legközelebbi ősétől származik.Az
FrameworkPropertyMetadatanem öröklő jelzők esetében felülbírálhatja az alapértelmezettfalseértéket egytrueértékkel. Azonban csak akkor bírálhatja felül atrueértéketfalseértékkel, ha az a Inherits, Journal, OverridesInheritanceBehaviorvagy SubPropertiesDoNotAffectRender.
Megjegyzés:
Az alapértelmezett egyesítési logikát a Merge metódus implementálja. A függőségi tulajdonságot öröklő származtatott osztályban megadhat egyéni egyesítési logikát az adott osztály Merge felülírásával.
Lásd még
- PropertyMetadata
- GetMetadata
- OverrideMetadata
- AddOwner
- Függőségi tulajdonság metaadatai
- függőség tulajdonságainak áttekintése
- egyéni függőségi tulajdonságok
.NET Desktop feedback