WindowChrome Klass

Definition

Representerar ett objekt som beskriver anpassningarna till området icke-klient i ett fönster.

public ref class WindowChrome : System::Windows::Freezable
public class WindowChrome : System.Windows.Freezable
type WindowChrome = class
    inherit Freezable
Public Class WindowChrome
Inherits Freezable
Arv

Kommentarer

Med klassen WindowChrome kan du utöka Windows Presentation Foundation (WPF) innehåll till området icke-klient i ett fönster som vanligtvis är reserverat för operativsystemets fönsterhanterare.

Standard Windows

Standardfönster består av två överlappande rektanglar. Den yttre rektangeln är det icke-klientområde som ofta kallas krom. Den ritas och hanteras av operativsystemets fönsterhanterare. Dess dimensioner bestäms av standardinställningarna för operativsystemet. Den icke-klientramen innehåller standardfunktioner och beteenden för fönster. Dessa inkluderar bildtextknappar (Minimera, Maximera och Stäng), fönstrets kantlinje, ändra storlek på och flytta beteenden, programikonen och rubriken och systemmenyn. Den inre rektangeln är klientområdet. Den innehåller innehållet i ditt program och det ritas och hanteras av programmet. Mer information om windows i WPF program finns i WPF Windows Overview.

Följande bild visar delarna i ett standardfönster.

Fönsterelement Fönsterelement

Anpassad Windows

Du kan anpassa en fönsterkantlinje genom att ange Window.WindowStyle egenskapen till None eller med hjälp WindowChrome av klassen .

WindowStyle.None

Ett sätt att anpassa utseendet på ett WPF programfönster är att ange egenskapen Window.WindowStyle till None. Detta tar bort den icke-klientramen från fönstret och lämnar endast klientområdet, som du kan använda ett anpassat format för. Men när den icke-klientramen tas bort förlorar du även de systemfunktioner och beteenden som den tillhandahåller, till exempel bildtextknappar och storleksändring av fönster. En annan bieffekt är att fönstret täcker Windows aktivitetsfältet när det maximeras. Med inställningen WindowStyle.None kan du skapa ett helt anpassat program, men kräver också att du implementerar anpassad logik i ditt program för att emulera standardfönstrets beteende.

WindowChrome

Om du vill anpassa ett fönster samtidigt som du behåller dess standardfunktioner kan du använda WindowChrome klassen. Klassen WindowChrome separerar funktionerna i fönsterramen från de visuella objekten och låter dig styra gränsen mellan klient- och icke-klientområdena i programfönstret. Med klassen WindowChrome kan du placera WPF innehåll i fönsterramen genom att utöka klientområdet så att det täcker området som inte är klient. Samtidigt behåller den systembeteenden genom två osynliga områden. ändra storlek på kantlinjer och textområden .

Det finns två huvuddelar för att skapa ett anpassat fönster med hjälp av WindowChrome klassen. Först anpassar du den icke-klientdel av fönstret genom att ange egenskaper som exponeras för WindowChrome objektet. Sedan anger du en mall för fönstret som definierar den del av programmet som utökas till området som inte är klient. Egenskaperna som exponeras för WindowChrome objektet är ResizeBorderThickness, CaptionHeight, CornerRadiusoch GlassFrameThickness.

Egenskapen ResizeBorderThickness anger en osynlig kantlinje utanför programfönstret som användaren kan klicka och dra för att ändra storlek på fönstret.

Egenskapen CaptionHeight anger ett osynligt område överst i fönstret som möjliggör systembeteenden som vanligtvis är associerade med namnlisten. Dessa beteenden omfattar: klicka och dra för att flytta fönstret, dubbelklicka för att maximera fönstret och högerklicka för att visa systemmenyn.

Området ändra storlek på kantlinje och bildtext har inga visuella element. de definierar endast områden som svarar på indata och aktiverar standardsystembaserade fönsterbeteenden.

Egenskapen CornerRadius anger hur mycket fönstrets hörn avrundas. Den här egenskapen har ingen effekt om glasramen är aktiverad för ett fönster.

Egenskapen GlassFrameThickness anger bredden på glasramen runt fönstret. Som standard använder den det systemvärde som anges av WindowNonClientFrameThickness egenskapen för att emulera utseendet på ett standardfönster. När glasramen används visas bildtextknapparna för Minimera, Maximera och Stäng och interaktiva. Programmet ansvarar för att visa programikonen och texttexten. Du kan ange egenskapen GlassFrameThickness så att glasramen blir bredare eller smalare än standardvärdet.

Caution

Storleken på bildtextknapparna ändras inte när egenskapen GlassFrameThickness ändras. Om höjden på glasramens överkant är mindre än höjden på bildtextknapparna blir bildtextknapparna inte helt synliga.

Om du vill skapa ett anpassat fönster som inte har en glasram anger du GlassFrameThickness egenskapen till ett enhetligt värde på 0. Detta inaktiverar och döljer standardrubrikknapparna.

Om du vill utöka glasramen så att den täcker hela fönstret anger du GlassFrameThickness egenskapen till ett negativt värde på valfri sida. När egenskapen GlassFrameThickness är inställd på ett negativt värde för alla sidor är dess framtvingade värde lika med GlassFrameCompleteThickness.

Note

Aero är en uppsättning visuella förbättringar av utseendet och funktionerna i Windows skrivbord som introducerades i Windows Vista. En av de mer visuellt uppenbara funktionerna i Aero är genomskinliga glasfönsterkanter. Windows Aero aktiveras av skrivbordssammansättningsfunktionen i Desktop Window Manager (DWM).

Windows Aero-glaseffekter stöds inte på alla operativsystem och kan inaktiveras på operativsystem som stöds. Om Windows Aero inte är tillgängligt visas inte glasramen oavsett egenskapsvärdet GlassFrameThickness. Det kantlinjeområde som anges av den här egenskapen visas i stället som svart. Kontrollera egenskapen IsGlassEnabled för att kontrollera att Windows Aero-glaseffekter är tillgängliga. Om glaseffekter inte är tillgängliga bör du ange ett alternativt fönsterformat som inte använder glasramen eller använda standardfönstret genom att ange fönsterformatet till null.

Du utökar ditt WPF innehåll till fönsterramen genom att ange ett ControlTemplate som definierar utseendet och beteendet för raminnehållet. Du anger TargetType för ControlTemplate till den typ av fönster som du anpassar.

<ControlTemplate TargetType="{x:Type local:MainWindow}">

Som standard är de delar av alla visuella element som finns i fönstrets icke-klientområde inte interaktiva. Om du vill aktivera interaktiva element i området som inte är klient kopplar du den anslutna egenskapen WindowsChrome.IsHitTestVisibleInChrome till elementet och anger det till true.

Följande XAML-markering visar de viktigaste elementen som behövs för att anpassa ett fönster med klassen WindowChrome.

<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>

Den första settern kopplar WindowChrome till fönstret. Den använder alla standardvärden för WindowChrome-egenskaperna, vilket gör att fönstret ser ut som ett standardfönster.

<Setter Property="shell:WindowChrome.WindowChrome">
    <Setter.Value>
        <shell:WindowChrome />
    </Setter.Value>
</Setter>

Fönstermallen måste ange en innehållspresentatör för att visa innehållet i fönstret som anges i programmet. Som standard utökar klassen WindowChrome klientområdet så att det täcker den icke-klientkantlinje. För att kunna upptäcka glasramen måste du ange en marginal runt ContentPresenter. Den här markeringen anger en kantlinje med en vit bakgrund runt innehållspresentatören för att emulera utseendet på ett standardfönster. Den anger också en marginal som är bunden till egenskapen WindowNonClientFrameThickness, som hämtar standardsystembredden för ramen.

<Border Background="White"
    Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
    <ContentPresenter Content="{TemplateBinding Content}" />
</Border>

Programikonen och rubriken visas inte av klassen WindowChrome. de måste läggas till i kantlinjen som anpassat innehåll. Följande XAML lägger till en bild och en textblockering för att visa ikonen och rubriken. Båda elementen är bundna till motsvarande egenskaper i fönstret. Bildbredden är bunden till SmallIconSize-bredden, som hämtar standardsystemstorleken för ikonen. Den anslutna egenskapen IsHitTestVisibleInChrome anges på bilden så att den kan ta emot mushändelser.

<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"/>

Konstruktorer

Name Description
WindowChrome()

Initierar en ny instans av WindowChrome klassen.

Fält

Name Description
CaptionHeightProperty

Identifierar beroendeegenskapen CaptionHeight .

CornerRadiusProperty

Identifierar beroendeegenskapen CornerRadius .

GlassFrameThicknessProperty

Identifierar beroendeegenskapen GlassFrameThickness .

IsHitTestVisibleInChromeProperty

Identifierar beroendeegenskapen IsHitTestVisibleInChrome .

NonClientFrameEdgesProperty

Identifierar beroendeegenskapen NonClientFrameEdges .

ResizeBorderThicknessProperty

Identifierar beroendeegenskapen ResizeBorderThickness .

ResizeGripDirectionProperty

Identifierar beroendeegenskapen ResizeGripDirection .

UseAeroCaptionButtonsProperty

Identifierar beroendeegenskapen UseAeroCaptionButtons .

WindowChromeProperty

Identifierar beroendeegenskapen WindowChrome .

Egenskaper

Name Description
CanFreeze

Hämtar ett värde som anger om objektet kan göras ommodifierbart.

(Ärvd från Freezable)
CaptionHeight

Hämtar eller anger höjden på undertextområdet överst i ett fönster.

CornerRadius

Hämtar eller anger ett värde som anger mängden som hörnen i ett fönster avrundas.

DependencyObjectType

DependencyObjectType Hämtar som omsluter CLR-typen för den här instansen.

(Ärvd från DependencyObject)
Dispatcher

Hämtar det Dispatcher som DispatcherObject är associerat med.

(Ärvd från DispatcherObject)
GlassFrameCompleteThickness

Får en enhetlig tjocklek på -1.

GlassFrameThickness

Hämtar eller anger ett värde som anger bredden på glaskantlinjen runt ett fönster.

IsFrozen

Hämtar ett värde som anger om objektet för närvarande kan ändras.

(Ärvd från Freezable)
IsSealed

Hämtar ett värde som anger om den här instansen för närvarande är förseglad (skrivskyddad).

(Ärvd från DependencyObject)
NonClientFrameEdges

Hämtar eller anger ett värde som anger vilka kanter i fönsterramen som inte ägs av klienten.

ResizeBorderThickness

Hämtar eller anger ett värde som anger bredden på den kantlinje som används för att ändra storlek på ett fönster.

UseAeroCaptionButtons

Hämtar eller anger ett värde som anger om träfftestning är aktiverat på knapparna för Windows Aero-undertext.

Kopplade egenskaper

Name Description
IsHitTestVisibleInChrome

Representerar ett objekt som beskriver anpassningarna till området icke-klient i ett fönster.

ResizeGripDirection

Representerar ett objekt som beskriver anpassningarna till området icke-klient i ett fönster.

WindowChrome

Hämtar eller anger den instans av WindowChrome som är kopplad till ett fönster.

Metoder

Name Description
CheckAccess()

Avgör om den anropande tråden har åtkomst till den här DispatcherObject.

(Ärvd från DispatcherObject)
ClearValue(DependencyProperty)

Rensar det lokala värdet för en egenskap. Egenskapen som ska rensas anges av en DependencyProperty identifierare.

(Ärvd från DependencyObject)
ClearValue(DependencyPropertyKey)

Rensar det lokala värdet för en skrivskyddad egenskap. Egenskapen som ska rensas anges av en DependencyPropertyKey.

(Ärvd från DependencyObject)
Clone()

Skapar en modifierbar klon av Freezableoch gör djupa kopior av objektets värden. När du kopierar objektets beroendeegenskaper kopierar den här metoden uttryck (som kanske inte längre matchar) men inte animeringar eller deras aktuella värden.

(Ärvd från Freezable)
CloneCore(Freezable)

Gör instansen till en klon (djupkopia) av de angivna Freezable med hjälp av grundläggande (icke-animerade) egenskapsvärden.

(Ärvd från Freezable)
CloneCurrentValue()

Skapar en modifierbar klon (djup kopia) av med hjälp av Freezable dess aktuella värden.

(Ärvd från Freezable)
CloneCurrentValueCore(Freezable)

Gör instansen till en modifierbar klon (djupkopia) av den angivna Freezable med hjälp av aktuella egenskapsvärden.

(Ärvd från Freezable)
CoerceValue(DependencyProperty)

Tvingar fram värdet för den angivna beroendeegenskapen. Detta uppnås genom att anropa alla CoerceValueCallback funktioner som anges i egenskapsmetadata för beroendeegenskapen eftersom den finns på anropet DependencyObject.

(Ärvd från DependencyObject)
CreateInstance()

Initierar en ny instans av Freezable klassen.

(Ärvd från Freezable)
CreateInstanceCore()

Skapar en ny instans av WindowChrome klassen.

Equals(Object)

Avgör om en angivet DependencyObject motsvarar den aktuella DependencyObject.

(Ärvd från DependencyObject)
Freeze()

Gör det aktuella objektet ommodifierbart och anger dess IsFrozen egenskap till true.

(Ärvd från Freezable)
FreezeCore(Boolean)

Gör objektet Freezable ommodifierbart eller testar om det kan göras ommodifierbart.

(Ärvd från Freezable)
GetAsFrozen()

Skapar en frusen Freezablekopia av , med hjälp av grundläggande (icke-animerade) egenskapsvärden. Eftersom kopian är låst kopieras alla frysta underobjekt som referens.

(Ärvd från Freezable)
GetAsFrozenCore(Freezable)

Gör instansen till en frusen klon av den angivna Freezable med hjälp av grundläggande (icke-animerade) egenskapsvärden.

(Ärvd från Freezable)
GetCurrentValueAsFrozen()

Skapar en frusen Freezable kopia av med aktuella egenskapsvärden. Eftersom kopian är låst kopieras alla frysta underobjekt som referens.

(Ärvd från Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Gör den aktuella instansen till en frusen klon av den angivna Freezable. Om objektet har animerade beroendeegenskaper kopieras deras aktuella animerade värden.

(Ärvd från Freezable)
GetHashCode()

Hämtar en hash-kod för den här DependencyObject.

(Ärvd från DependencyObject)
GetIsHitTestVisibleInChrome(IInputElement)

Hämtar värdet för den IsHitTestVisibleInChrome anslutna egenskapen från det angivna indataelementet.

GetLocalValueEnumerator()

Skapar en specialiserad uppräknare för att avgöra vilka beroendeegenskaper som har lokalt angivna värden för den här DependencyObject.

(Ärvd från DependencyObject)
GetResizeGripDirection(IInputElement)

Hämtar värdet för den ResizeGripDirection anslutna egenskapen från det angivna indataelementet.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
GetValue(DependencyProperty)

Returnerar det aktuella effektiva värdet för en beroendeegenskap för den här instansen av en DependencyObject.

(Ärvd från DependencyObject)
GetWindowChrome(Window)

Hämtar värdet för den WindowChrome anslutna egenskapen från den angivna Window.

InvalidateProperty(DependencyProperty)

Utvärderar det effektiva värdet för den angivna beroendeegenskapen igen.

(Ärvd från DependencyObject)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnChanged()

Anropas när det aktuella Freezable objektet ändras.

(Ärvd från Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Den här medlemmen stöder infrastrukturen för Windows Presentation Foundation (WPF) och är inte avsedd att användas direkt från koden.

(Ärvd från Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Ser till att lämpliga kontextpekare upprättas för en DependencyObjectType datamedlem som just har angetts.

(Ärvd från Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Åsidosätter implementeringen DependencyObject av OnPropertyChanged(DependencyPropertyChangedEventArgs) för att även anropa alla Changed hanterare som svar på en ändrad beroendeegenskap av typen Freezable.

(Ärvd från Freezable)
ReadLocalValue(DependencyProperty)

Returnerar det lokala värdet för en beroendeegenskap, om den finns.

(Ärvd från DependencyObject)
ReadPreamble()

Säkerställer att åtkomsten Freezable görs från en giltig tråd. Arvtagare Freezable till måste anropa den här metoden i början av ett API som läser datamedlemmar som inte är beroendeegenskaper.

(Ärvd från Freezable)
SetCurrentValue(DependencyProperty, Object)

Anger värdet för en beroendeegenskap utan att ändra dess värdekälla.

(Ärvd från DependencyObject)
SetIsHitTestVisibleInChrome(IInputElement, Boolean)

Anger värdet för den IsHitTestVisibleInChrome anslutna egenskapen för det angivna indataelementet.

SetResizeGripDirection(IInputElement, ResizeGripDirection)

Anger värdet för den ResizeGripDirection anslutna egenskapen för det angivna indataelementet.

SetValue(DependencyProperty, Object)

Anger det lokala värdet för en beroendeegenskap som anges av dess beroendeegenskapsidentifierare.

(Ärvd från DependencyObject)
SetValue(DependencyPropertyKey, Object)

Anger det lokala värdet för en skrivskyddad beroendeegenskap som anges av identifieraren DependencyPropertyKey för beroendeegenskapen.

(Ärvd från DependencyObject)
SetWindowChrome(Window, WindowChrome)

Anger värdet för den WindowChrome anslutna egenskapen på den angivna Window.

ShouldSerializeProperty(DependencyProperty)

Returnerar ett värde som anger om serialiseringsprocesser ska serialisera värdet för den angivna beroendeegenskapen.

(Ärvd från DependencyObject)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
VerifyAccess()

Framtvingar att den anropande tråden har åtkomst till den här DispatcherObject.

(Ärvd från DispatcherObject)
WritePostscript()

Genererar Changed händelsen för Freezable och anropar dess OnChanged() metod. Klasser som härleds från Freezable bör anropa den här metoden i slutet av alla API:er som ändrar klassmedlemmar som inte lagras som beroendeegenskaper.

(Ärvd från Freezable)
WritePreamble()

Verifierar att Freezable inte är låst och att den nås från en giltig trådkontext. Freezable ärver bör anropa den här metoden i början av ett API som skriver till datamedlemmar som inte är beroendeegenskaper.

(Ärvd från Freezable)

Händelser

Name Description
Changed

Inträffar när eller Freezable ett objekt som det innehåller ändras.

(Ärvd från Freezable)

Gäller för