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
ésArrangeOverride
metó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
,AffectsMeasure
vagyAffectsRender
é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.
BindsTwoWayByDefault
csak az alapértelmezett kötési módot érinti. A kötés adatfolyam-irányának szerkesztéséhez állítsa Binding.Mode. AzIsNotDataBindable
haszná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
Journal
jelző 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 aJournal
jelö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. AJournal
jelző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.
FrameworkPropertyMetadataOptions
lehetővé teszi a metaadat-jelzők bitenkénti VAGY kombinációban történő megadását. Példányosítsa aFrameworkPropertyMetadata
-t egyFrameworkPropertyMetadataOptions
paraméterrel rendelkező konstruktor használatával, és adja át aFrameworkPropertyMetadataOptions
példányát. Ha módosítani szeretné a metaadat-jelzőket, miután átadtaFrameworkPropertyMetadataOptions
a 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 rendelkezikFrameworkPropertyMetadataOptions
paramé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 aInherits
jelző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 megCoerceValueCallback
a felülbírálási metaadatokban, az érték aCoerceValueCallback
megadott öröklési lánc legközelebbi ősétől származik.Az
FrameworkPropertyMetadata
nem ö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