WindowChrome Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Az ablak nem ügyfélterületének testreszabását leíró objektumot jelöl.
public ref class WindowChrome : System::Windows::Freezable
public class WindowChrome : System.Windows.Freezable
type WindowChrome = class
inherit Freezable
Public Class WindowChrome
Inherits Freezable
- Öröklődés
Megjegyzések
A WindowChrome osztály lehetővé teszi Windows megjelenítési alaprendszer (WPF) tartalom kiterjesztését egy olyan ablak nem ügyfélterületére, amely általában az operációs rendszer ablakkezelője számára van fenntartva.
Standard Windows
A standard ablakok két egymást átfedő téglalapból állnak. A külső téglalap a nem ügyfél terület, amelyet gyakran chrome-nak neveznek. Az operációs rendszer ablakkezelője rajzolja és kezeli. Méreteit a standard operációsrendszer-beállítások határozzák meg. A nem ügyfélkeret szabványos ablakfunkciókat és viselkedést biztosít. Ezek közé tartoznak a feliratgombok (Kis méret, Teljes méret és Bezárás), az ablakszegély, az átméretezési és áthelyezési viselkedések, az alkalmazás ikonja és címe, valamint a rendszermenü. A belső téglalap az ügyfélterület. Tartalmazza az alkalmazás tartalmát, és az alkalmazás rajzolja és kezeli. Az WPF alkalmazások windows további információiért lásd: WPF Windows Áttekintés.
Az alábbi ábrán egy szabványos ablak részei láthatók.
Egyéni Windows
Az ablakszegélyek testreszabásához állítsa be a Window.WindowStyle tulajdonságot az osztályra None vagy az WindowChrome osztály használatával.
WindowStyle.None
Egy WPF alkalmazásablak megjelenésének testreszabásának egyik módja, ha a Window.WindowStyle tulajdonságot None értékre állítja. Ezzel eltávolítja a nem ügyfélkeretet az ablakból, és csak az ügyfélterületet hagyja, amelyre egyéni stílust alkalmazhat. Ha azonban eltávolítja a nem ügyfélkeretet, elveszíti az általa biztosított rendszerfunkciókat és viselkedéseket, például a feliratgombokat és az ablak átméretezését. Egy másik mellékhatás az, hogy az ablak teljes méretben lefedi a Windows tálcát. A beállítás WindowStyle.None lehetővé teszi egy teljesen egyéni alkalmazás létrehozását, de azt is megköveteli, hogy egyéni logikát implementáljon az alkalmazásban a szabványos ablak viselkedésének emulálása érdekében.
WindowChrome
Ha testre szeretne szabni egy ablakot, miközben megtartja a szokásos funkcióit, használhatja az osztályt WindowChrome . Az WindowChrome osztály elkülöníti az ablakkeret funkcióit a vizualizációktól, és lehetővé teszi az alkalmazásablak ügyfél- és nem ügyfélterületei közötti határ szabályozását. A WindowChrome osztály lehetővé teszi WPF tartalom elhelyezését az ablakkeretben az ügyfélterület kibővítésével, hogy lefedje a nem ügyfélterületet. Ugyanakkor két láthatatlan területen tartja meg a rendszer viselkedését; a szegély és a feliratterületének átméretezése.
Az osztály használatával WindowChrome két fő részből áll az egyéni ablak létrehozása. Először testre szabhatja az ablak nem ügyfél jellegű részét az objektumon WindowChrome közzétett tulajdonságok beállításával. Ezután meg kell adnia egy sablont az ablakhoz, amely meghatározza az alkalmazás azon részét, amely a nem ügyfélterületre van kiterjesztve. Az objektumon közzétett tulajdonságok a WindowChrome következőkResizeBorderThickness: , CaptionHeightCornerRadiusés GlassFrameThickness.
A ResizeBorderThickness tulajdonság egy láthatatlan szegélyt határoz meg az alkalmazásablak külső részén, amelyet a felhasználó kattintással és húzással átméretezhet az ablak átméretezéséhez.
A CaptionHeight tulajdonság egy láthatatlan területet határoz meg az ablak tetején, amely lehetővé teszi a rendszerint a címsorhoz társított rendszerviselkedéseket. Ezek a viselkedések a következők: kattintással és húzással áthelyezheti az ablakot, dupla kattintással teljes méretűre állíthatja az ablakot, és a jobb gombbal kattintva megjelenítheti a rendszermenüt.
Az átméretezés szegélye és feliratterülete nem rendelkezik vizuális elemekkel; csak olyan területeket határoznak meg, amelyek reagálnak a bemenetre, és engedélyezik a szabványos rendszer által biztosított ablak viselkedését.
A CornerRadius tulajdonság azt az összeget adja meg, amelyet az ablak sarkai lekerekítettek. Ennek a tulajdonságnak nincs hatása, ha az üvegkeret engedélyezve van egy ablakban.
A GlassFrameThickness tulajdonság az ablak körüli üvegkeret szélességét határozza meg. Alapértelmezés szerint a tulajdonság által WindowNonClientFrameThickness megadott rendszerérték használatával emulálja a szabványos ablak megjelenését. Az üvegkeret használata esetén a Kis méret, a Teljes méret és a Bezárás felirat gombjai láthatók és interaktívak. Az alkalmazás felelős az alkalmazás ikonjának és a felirat szövegének megjelenítéséért. Beállíthatja úgy a GlassFrameThickness tulajdonságot, hogy az üvegkeret az alapértelmezettnél szélesebb vagy keskenyebb legyen.
Figyelmeztetés
A feliratgombok mérete nem változik a GlassFrameThickness tulajdonság módosításakor. Ha az üvegkeret tetejének magassága kisebb, mint a feliratgombok magassága, a feliratgombok nem lesznek teljesen láthatók.
Ha olyan egyéni ablakot szeretne készíteni, amely nem rendelkezik üvegkerettel, állítsa a GlassFrameThickness tulajdonságot 0 egységes értékre. Ez letiltja és elrejti a szabványos felirat gombokat.
Ha az üvegkeretet a teljes ablak lefedésére szeretné kiterjeszteni, állítsa a GlassFrameThickness tulajdonságot negatív értékre bármelyik oldalon. Ha a GlassFrameThickness tulajdonság bármely oldal negatív értékére van állítva, a kényszerített érték egyenlő lesz.GlassFrameCompleteThickness
Note
Az Aero a Windows Vista-ben bevezetett Windows asztal megjelenésének és funkcióinak vizuális fejlesztéseiből áll. Az Aero egyik vizuálisan kézenfekvő funkciója az áttetsző üvegablakszegélyek. Windows Az Aero-t a Desktop Window Manager (DWM) asztali összeállítási funkciója engedélyezi.
Windows Az Aero üvegeffektusok nem támogatottak minden operációs rendszeren, és a támogatott operációs rendszereken letilthatók. Ha Windows Aero nem érhető el, az üvegkeret nem jelenik meg a GlassFrameThickness tulajdonságértéktől függetlenül. A tulajdonság által megadott szegélyterület fekete színben jelenik meg. Ellenőrizze a IsGlassEnabled tulajdonságot annak ellenőrzéséhez, hogy Windows Aero-üvegeffektusok elérhetők-e. Ha az üvegeffektusok nem érhetők el, olyan alternatív ablakstílust kell megadnia, amely nem használja az üvegkeretet, vagy a standard ablakot használja az ablakstílus null értékre állításával.
A WPF tartalmát az ablakkeretbe úgy terjesztheti ki, hogy meg kell adnia egy ControlTemplate-et, amely meghatározza a keret tartalmának megjelenését és viselkedését. A ControlTemplate TargetType elemét a testreszabandó ablak típusára állítja.
<ControlTemplate TargetType="{x:Type local:MainWindow}">
Alapértelmezés szerint az ablak nem ügyfélterületén lévő vizuális elemek részei nem interaktívak. Ha engedélyezni szeretné az interaktív elemeket a nem ügyfélterületen, csatolja a WindowsChrome.IsHitTestVisibleInChrome csatolt tulajdonságot az elemhez, és állítsa igaz értékre.
Az alábbi XAML-korrektúra az ablak WindowsChrome osztály használatával történő testreszabásához szükséges fő elemeket mutatja be.
<Style x:Key="StandardStyle" TargetType="{x:Type local:MainWindow}">
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MainWindow}">
<Grid>
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="36,8,0,0"/>
<Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"
Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"
shell:WindowChrome.IsHitTestVisibleInChrome="True"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Az első beállító csatolja a WindowChrome-t az ablakhoz. A WindowChrome tulajdonságainak összes alapértelmezett értékét használja, így az ablak normál ablakként jelenik meg.
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
Az ablaksablonnak meg kell adnia egy tartalomelőadót az alkalmazásban megadott ablak tartalmának megjelenítéséhez. Alapértelmezés szerint a WindowChrome osztály kiterjeszti az ügyfélterületet a nem ügyfélszegély lefedésére. Az üvegkeret felfedéséhez meg kell adnia egy margót a ContentPresenter körül. Ez a korrektúra egy fehér háttérrel ellátott szegélyt ad meg a tartalomelőadó körül a szabványos ablak megjelenésének emulálásához. Emellett a WindowNonClientFrameThickness tulajdonsághoz kötött margót is megadja, amely a keret alapértelmezett rendszerszélességét kapja meg.
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
Az alkalmazás ikonja és címe nem jelenik meg a WindowChrome osztályban; ezeket egyéni tartalomként kell hozzáadni a szegélyhez. Az alábbi XAML egy képet és egy szövegblokkot ad hozzá az ikon és a cím megjelenítéséhez. Mindkét elem az ablak megfelelő tulajdonságaihoz van kötve. A képszélesség a SmallIconSize szélességhez van kötve, amely az ikon alapértelmezett rendszerméretét kapja meg. Az IsHitTestVisibleInChrome csatolt tulajdonság be van állítva a képen, hogy fogadni tudja az egéreseményeket.
<Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness}"
Width="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=SmallIconSize.Width}"
shell:WindowChrome.IsHitTestVisibleInChrome="True"/>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"
VerticalAlignment="Top" HorizontalAlignment="Left"
Margin="36,8,0,0"/>
Konstruktorok
| Név | Description |
|---|---|
| WindowChrome() |
Inicializálja a WindowChrome osztály új példányát. |
Mezők
| Név | Description |
|---|---|
| CaptionHeightProperty |
Azonosítja a CaptionHeight függőségi tulajdonságot. |
| CornerRadiusProperty |
Azonosítja a CornerRadius függőségi tulajdonságot. |
| GlassFrameThicknessProperty |
Azonosítja a GlassFrameThickness függőségi tulajdonságot. |
| IsHitTestVisibleInChromeProperty |
Azonosítja a IsHitTestVisibleInChrome függőségi tulajdonságot. |
| NonClientFrameEdgesProperty |
Azonosítja a NonClientFrameEdges függőségi tulajdonságot. |
| ResizeBorderThicknessProperty |
Azonosítja a ResizeBorderThickness függőségi tulajdonságot. |
| ResizeGripDirectionProperty |
Azonosítja a ResizeGripDirection függőségi tulajdonságot. |
| UseAeroCaptionButtonsProperty |
Azonosítja a UseAeroCaptionButtons függőségi tulajdonságot. |
| WindowChromeProperty |
Azonosítja a WindowChrome függőségi tulajdonságot. |
Tulajdonságok
| Név | Description |
|---|---|
| CanFreeze |
Olyan értéket kap, amely jelzi, hogy az objektum módosítható-e. (Öröklődés forrása Freezable) |
| CaptionHeight |
Lekéri vagy beállítja a feliratterület magasságát az ablak tetején. |
| CornerRadius |
Lekéri vagy beállít egy értéket, amely jelzi az ablak sarkainak kerekítését. |
| DependencyObjectType |
Lekéri a DependencyObjectType példány CLR-típusát körbefuttatót. (Öröklődés forrása DependencyObject) |
| Dispatcher |
Lekérdezi, Dispatcher hogy ez a társítva van-e DispatcherObject . (Öröklődés forrása DispatcherObject) |
| GlassFrameCompleteThickness |
-1 egységes vastagságot kap. |
| GlassFrameThickness |
Olyan értéket kap vagy állít be, amely az ablak körüli üvegszegély szélességét jelzi. |
| IsFrozen |
Olyan értéket kap, amely jelzi, hogy az objektum jelenleg módosítható-e. (Öröklődés forrása Freezable) |
| IsSealed |
Olyan értéket kap, amely jelzi, hogy a példány jelenleg zárolva van-e (írásvédett). (Öröklődés forrása DependencyObject) |
| NonClientFrameEdges |
Lekéri vagy beállít egy értéket, amely azt jelzi, hogy az ablakkeret mely szélei nem az ügyfél tulajdonában vannak. |
| ResizeBorderThickness |
Beolvas vagy beállít egy értéket, amely az ablak átméretezéséhez használt szegély szélességét jelzi. |
| UseAeroCaptionButtons |
Lekéri vagy beállít egy értéket, amely jelzi, hogy engedélyezve van-e a találattesztelés a Windows Aero feliratgombokon. |
Hozzácsatolt tulajdonságok
| Név | Description |
|---|---|
| IsHitTestVisibleInChrome |
Az ablak nem ügyfélterületének testreszabását leíró objektumot jelöl. |
| ResizeGripDirection |
Az ablak nem ügyfélterületének testreszabását leíró objektumot jelöl. |
| WindowChrome |
Lekéri vagy beállítja WindowChrome az ablakhoz csatolt példányt. |
Metódusok
| Név | Description |
|---|---|
| CheckAccess() |
Meghatározza, hogy a hívó szál hozzáfér-e ehhez DispatcherObject. (Öröklődés forrása DispatcherObject) |
| ClearValue(DependencyProperty) |
Törli egy tulajdonság helyi értékét. A törölni kívánt tulajdonságot egy DependencyProperty azonosító határozza meg. (Öröklődés forrása DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Törli egy írásvédett tulajdonság helyi értékét. A törölni kívánt tulajdonságot egy DependencyPropertyKey. (Öröklődés forrása DependencyObject) |
| Clone() |
Módosítható klónt hoz létre az Freezableobjektumról, amely az objektum értékeinek részletes másolatát készíti el. Az objektum függőségi tulajdonságainak másolásakor ez a metódus kifejezéseket másol (amelyek már nem oldhatók fel), de nem animációkat vagy azok aktuális értékeit. (Öröklődés forrása Freezable) |
| CloneCore(Freezable) |
A példányt a megadott Freezable klónként (mélymásolatként) hozza létre alap (nem animált) tulajdonságértékek használatával. (Öröklődés forrása Freezable) |
| CloneCurrentValue() |
Módosítható klónt (mély másolatot) hoz létre az Freezable aktuális értékek használatával. (Öröklődés forrása Freezable) |
| CloneCurrentValueCore(Freezable) |
A példányt módosítható klónként (mély másolatként) adja meg a megadott Freezable értékekkel. (Öröklődés forrása Freezable) |
| CoerceValue(DependencyProperty) |
A megadott függőségi tulajdonság értékét kényszeríti. Ez úgy érhető el, hogy meghívja a függőségi tulajdonság tulajdonság metaadataiban megadott függvényeket CoerceValueCallback a hívás DependencyObjectsorán. (Öröklődés forrása DependencyObject) |
| CreateInstance() |
Inicializálja a Freezable osztály új példányát. (Öröklődés forrása Freezable) |
| CreateInstanceCore() |
Létrehozza az osztály új példányát WindowChrome . |
| Equals(Object) |
Meghatározza, hogy a megadott DependencyObject érték megegyezik-e az aktuális DependencyObjectértékével. (Öröklődés forrása DependencyObject) |
| Freeze() |
Az aktuális objektum nem módosítható, és a tulajdonságát a következőre IsFrozenállítja |
| FreezeCore(Boolean) |
Freezable Az objektum nem módosíthatóvá válik, vagy teszteli, hogy módosítható-e. (Öröklődés forrása Freezable) |
| GetAsFrozen() |
Az alaptulajdonságok Freezable(nem animált) értékeinek egy fagyasztott másolatát hozza létre. Mivel a másolat le van fagyasztva, a program hivatkozással másolja a befagyott alobjektumokat. (Öröklődés forrása Freezable) |
| GetAsFrozenCore(Freezable) |
A példányt a megadott Freezable , alapszintű (nem animált) tulajdonságértékekkel zárolt klónává teszi. (Öröklődés forrása Freezable) |
| GetCurrentValueAsFrozen() |
Az aktuális tulajdonságértékek fagyasztott másolatát Freezable hozza létre. Mivel a másolat le van fagyasztva, a program hivatkozással másolja a befagyott alobjektumokat. (Öröklődés forrása Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Az aktuális példányt a megadott Freezablezárolt klónává teszi. Ha az objektum animált függőségi tulajdonságokkal rendelkezik, a program átmásolja az aktuális animált értékeket. (Öröklődés forrása Freezable) |
| GetHashCode() |
Ehhez lekéri a DependencyObjectkivonatkódot. (Öröklődés forrása DependencyObject) |
| GetIsHitTestVisibleInChrome(IInputElement) |
Lekéri a IsHitTestVisibleInChrome csatolt tulajdonság értékét a megadott bemeneti elemből. |
| GetLocalValueEnumerator() |
Létrehoz egy speciális enumerátort annak meghatározásához, hogy mely függőségi tulajdonságok rendelkeznek helyileg beállított értékekkel.DependencyObject (Öröklődés forrása DependencyObject) |
| GetResizeGripDirection(IInputElement) |
Lekéri a ResizeGripDirection csatolt tulajdonság értékét a megadott bemeneti elemből. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| GetValue(DependencyProperty) |
Egy függőségi tulajdonság aktuális tényleges értékét adja vissza az adott példányon DependencyObject. (Öröklődés forrása DependencyObject) |
| GetWindowChrome(Window) |
Lekéri a WindowChrome csatolt tulajdonság értékét a megadottból Window. |
| InvalidateProperty(DependencyProperty) |
Újra kiértékeli a megadott függőségi tulajdonság tényleges értékét. (Öröklődés forrása DependencyObject) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| OnChanged() |
Az aktuális Freezable objektum módosításakor hívható meg. (Öröklődés forrása Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Ez a tag támogatja a Windows megjelenítési alaprendszer (WPF) infrastruktúrát, és nem közvetlenül a kódból való használatra szolgál. (Öröklődés forrása Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Biztosítja, hogy a megfelelő környezeti mutatók létre legyenek hozva az DependencyObjectType éppen beállított adattagok számára. (Öröklődés forrása Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Felülbírálja a DependencyObject változó típusú függőségi tulajdonságra válaszul a kezelők meghívásának OnPropertyChanged(DependencyPropertyChangedEventArgs)Changedvégrehajtását Freezable is. (Öröklődés forrása Freezable) |
| ReadLocalValue(DependencyProperty) |
Egy függőségi tulajdonság helyi értékét adja vissza, ha létezik. (Öröklődés forrása DependencyObject) |
| ReadPreamble() |
Biztosítja, hogy a Freezable rendszer érvényes szálról legyen elérhető. A metódus öröklőinek Freezable minden olyan API elején meg kell hívniuk ezt a metódust, amely olyan adattagokat olvas be, amelyek nem függőségi tulajdonságok. (Öröklődés forrása Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Beállítja egy függőségi tulajdonság értékét az értékforrás módosítása nélkül. (Öröklődés forrása DependencyObject) |
| SetIsHitTestVisibleInChrome(IInputElement, Boolean) |
Beállítja a IsHitTestVisibleInChrome csatolt tulajdonság értékét a megadott bemeneti elemen. |
| SetResizeGripDirection(IInputElement, ResizeGripDirection) |
Beállítja a ResizeGripDirection csatolt tulajdonság értékét a megadott bemeneti elemen. |
| SetValue(DependencyProperty, Object) |
Beállítja egy függőségi tulajdonság helyi értékét, amelyet a függőségi tulajdonság azonosítója határoz meg. (Öröklődés forrása DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Beállítja egy írásvédett függőség tulajdonság helyi értékét, amelyet a DependencyPropertyKey függőségi tulajdonság azonosítója határoz meg. (Öröklődés forrása DependencyObject) |
| SetWindowChrome(Window, WindowChrome) |
Beállítja a WindowChrome csatolt tulajdonság értékét a megadott Window. |
| ShouldSerializeProperty(DependencyProperty) |
Olyan értéket ad vissza, amely jelzi, hogy a szerializálási folyamatok szerializálják-e a megadott függőségi tulajdonság értékét. (Öröklődés forrása DependencyObject) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| VerifyAccess() |
Kényszeríti, hogy a hívószál hozzáférhessen ehhez.DispatcherObject (Öröklődés forrása DispatcherObject) |
| WritePostscript() |
Elindítja az Changed eseményt, Freezable és meghívja annak metódusát OnChanged() . A származtatott Freezable osztályoknak ezt a metódust minden olyan API végén kell meghívni, amely módosítja a nem függőségi tulajdonságokként tárolt osztálytagokat. (Öröklődés forrása Freezable) |
| WritePreamble() |
Ellenőrzi, hogy a Freezable rendszer nem zárolta-e a elemet, és hogy az érvényes szálkezelési környezetből van-e elérhető. Freezable Az öröklőknek ezt a metódust minden olyan API elején kell meghívni, amely nem függőségi tulajdonságokat tartalmazó adattagoknak ír. (Öröklődés forrása Freezable) |
esemény
| Név | Description |
|---|---|
| Changed |
Akkor fordul elő, ha a Freezable benne lévő objektum vagy objektum módosul. (Öröklődés forrása Freezable) |