Sdílet prostřednictvím


WindowChrome Třída

Definice

Představuje objekt, který popisuje přizpůsobení neklientskou oblast okna.

public ref class WindowChrome : System::Windows::Freezable
public class WindowChrome : System.Windows.Freezable
type WindowChrome = class
    inherit Freezable
Public Class WindowChrome
Inherits Freezable
Dědičnost

Poznámky

Třída WindowChrome umožňuje rozšířit obsah Windows Presentation Foundation (WPF) do neklijované oblasti okna, která je obvykle vyhrazena pro správce oken operačního systému.

Standardní okna

Standardní okna se skládají ze dvou překrývajících se obdélníků. Vnější obdélník je nekližní oblast, která se často označuje jako chrom. Kreslí a spravuje ho správce oken operačního systému. Jeho rozměry jsou určeny standardním nastavením operačního systému. Rámec, který není klientem, poskytuje standardní funkce a chování okna. Patří mezi ně tlačítka popis (Minimalizovat, Maximalizovat a Zavřít), chování ohraničení okna, změna velikosti a přesunutí, ikona a název aplikace a systémová nabídka. Vnitřní obdélník je klientská oblast. Obsahuje obsah vaší aplikace a aplikace ho vykreslí a spravuje. Další informace o windows v aplikacích WPF najdete v tématu WpF Windows – přehled.

Následující obrázek znázorňuje části standardního okna.

Prvky okna

Vlastní okna

Ohraničení okna můžete přizpůsobit nastavením Window.WindowStyle vlastnosti na None nebo pomocí WindowChrome třídy.

WindowStyle.None

Jedním ze způsobů, jak přizpůsobit vzhled okna aplikace WPF, je nastavit Window.WindowStyle vlastnost na None. Tím se z okna odebere nekližní rámeček a zůstane jenom klientská oblast, na kterou můžete použít vlastní styl. Při odebrání nekližního rámce ale ztratíte také funkce a chování systému, které poskytuje, například popis tlačítek a změna velikosti okna. Dalším vedlejším efektem je, že okno při maximalizaci překryje hlavní panel Windows. Nastavení WindowStyle.None umožňuje vytvořit zcela vlastní aplikaci, ale také vyžaduje, abyste do aplikace implementovali vlastní logiku pro emulaci standardního chování okna.

WindowChrome

Pokud chcete přizpůsobit okno při zachování jeho standardních funkcí, můžete použít WindowChrome třídu . Třída WindowChrome odděluje funkčnost rámečku okna od vizuálů a umožňuje řídit hranici mezi klientskou a neklientskou oblastí okna aplikace. Třída WindowChrome umožňuje umístit obsah WPF do rámečku okna rozšířením klientské oblasti tak, aby pokrývaly neklitskou oblast. Současně zachovává chování systému prostřednictvím dvou neviditelných oblastí; změňte velikost ohraničení a popis oblastí.

Existují dvě hlavní části vytvoření vlastního okna pomocí WindowChrome třídy. Nejprve přizpůsobíte nekližskou část okna nastavením vlastností vystavených objektu WindowChrome . Pak zadáte šablonu pro okno, která definuje část vaší aplikace, která je rozšířena do neklitované oblasti. Vlastnosti vystavené objektu WindowChrome jsou ResizeBorderThickness, CaptionHeightCornerRadius, a GlassFrameThickness.

Vlastnost ResizeBorderThickness určuje neviditelné ohraničení kolem vnějšího okna aplikace, které uživatel může kliknutím a přetažením změnit velikost okna.

Vlastnost CaptionHeight určuje neviditelnou oblast v horní části okna, která umožňuje chování systému obvykle spojené s záhlavím. Mezi tato chování patří: kliknutím a přetažením přesunete okno, poklikáním okno maximalizujete a kliknutím pravým tlačítkem zobrazíte nabídku systému.

Velikost ohraničení a popis oblasti neobsahují žádné vizuální prvky; definují pouze oblasti, které reagují na vstup, a umožňují standardní systémové chování oken.

Vlastnost CornerRadius určuje hodnotu zaokrouhlení rohů okna. Tato vlastnost nemá žádný vliv, pokud je pro okno povolený skleněný rámeček.

Vlastnost GlassFrameThickness určuje šířku skleněného rámečku kolem okna. Ve výchozím nastavení používá systémovou hodnotu určenou WindowNonClientFrameThickness vlastností k emulaci vzhledu standardního okna. Při použití skleněného rámečku jsou tlačítka popis pro Minimalizovat, Maximalizovat a Zavřít viditelná a interaktivní. Aplikace je zodpovědná za zobrazení ikony aplikace a popis textu. Vlastnost můžete nastavit tak GlassFrameThickness , aby byl skleněný rámeček širší nebo užší než výchozí.

Upozornění

Velikost tlačítek popis se při GlassFrameThickness změně vlastnosti nezmění. Pokud je výška horní části skleněného rámečku menší než výška tlačítek popis, nebudou tlačítka popis zcela viditelná.

Pokud chcete vytvořit vlastní okno, které nemá skleněný rám, nastavte GlassFrameThickness vlastnost na jednotnou hodnotu 0. Tím zakážete a skryjete standardní tlačítka popis.

Pokud chcete rozšířit skleněný rám tak, aby pokrývaly celé okno, nastavte GlassFrameThickness vlastnost na zápornou hodnotu na libovolné straně. GlassFrameThickness Pokud je vlastnost nastavena na zápornou hodnotu pro libovolnou stranu, bude její vysouzená hodnota rovna GlassFrameCompleteThickness.

Poznámka

Aero je sada vizuálních vylepšení vzhledu a funkcí plochy Windows, která byla představena v systému Windows Vista. Jedním z vizuálně zřetelnějších rysů Aera je průsvitné skleněné ohraničení oken. Windows Aero je povoleno funkcí desktopové skladby ve Správci desktopových oken (DWM).

Efekty windows Aero glass nejsou podporovány ve všech operačních systémech a je možné je zakázat v podporovaných operačních systémech. Pokud windows Aero není k dispozici, skleněný rámeček se nezobrazí bez ohledu na GlassFrameThickness hodnotu vlastnosti. Oblast ohraničení určená touto vlastností se místo toho bude zobrazovat černá. IsGlassEnabled Zkontrolujte vlastnost a ověřte, že jsou k dispozici efekty skla Windows Aero. Pokud nejsou k dispozici skleněné efekty, měli byste zadat alternativní styl okna, který nepoužívá skleněný rám, nebo použít standardní okno nastavením stylu okna na hodnotu null.

Obsah WPF rozšíříte do rámečku okna zadáním controlTemplate, který definuje vzhled a chování obsahu rámečku. Typ cíle ControlTemplate nastavíte na typ okna, které upravujete.

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

Ve výchozím nastavení nejsou části vizuálních prvků, které jsou v nekližní oblasti okna, interaktivní. Chcete-li povolit interaktivní prvky v jiné než klientské oblasti, připojte k elementu připojenou vlastnost WindowsChrome.IsHitTestVisibleInChrome a nastavte ji na true.

Následující kód XAML ukazuje hlavní prvky potřebné k přizpůsobení okna pomocí WindowChrome třídy.

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

První setter připojí WindowChrome k oknem. Používá všechny výchozí hodnoty pro vlastnosti WindowChrome, díky čemuž bude okno vypadat jako standardní okno.

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

Šablona okna musí určit prezentujícího obsahu, aby se zobrazil obsah okna zadaného ve vaší aplikaci. Ve výchozím nastavení třída WindowChrome rozšiřuje klientskou oblast tak, aby pokrývaly nekližní ohraničení. Chcete-li odkrýt skleněný rám, musíte zadat okraj kolem ContentPresenter. Tato značka určuje ohraničení s bílým pozadím kolem prezentujícího obsahu, které emuluje vzhled standardního okna. Určuje také okraj, který je svázán s WindowNonClientFrameThickness vlastnost, která získá výchozí šířku systému pro rámec.

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

Ikona aplikace a název nejsou zobrazeny WindowChrome třída; musí být přidány k ohraničení jako vlastní obsah. Následující kód XAML přidá obrázek a blok textu pro zobrazení ikony a názvu. Oba prvky jsou svázány s odpovídajícími vlastnostmi v okně. Šířka obrázku je vázána na šířku SmallIconSize, která získá výchozí velikost systému pro ikonu. Připojená vlastnost IsHitTestVisibleInChrome je nastavena na obrázku tak, aby mohl přijímat události myši.

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

Konstruktory

WindowChrome()

Inicializuje novou instanci WindowChrome třídy.

Pole

CaptionHeightProperty

Identifikuje CaptionHeight vlastnost závislosti.

CornerRadiusProperty

Identifikuje CornerRadius vlastnost závislosti.

GlassFrameThicknessProperty

Identifikuje GlassFrameThickness vlastnost závislosti.

IsHitTestVisibleInChromeProperty

Identifikuje IsHitTestVisibleInChrome vlastnost závislosti.

NonClientFrameEdgesProperty

Identifikuje NonClientFrameEdges vlastnost závislosti.

ResizeBorderThicknessProperty

Identifikuje ResizeBorderThickness vlastnost závislosti.

ResizeGripDirectionProperty

Identifikuje ResizeGripDirection vlastnost závislosti.

UseAeroCaptionButtonsProperty

Identifikuje UseAeroCaptionButtons vlastnost závislosti.

WindowChromeProperty

Identifikuje WindowChrome vlastnost závislosti.

Vlastnosti

CanFreeze

Získá hodnotu, která označuje, zda objekt lze změnit.

(Zděděno od Freezable)
CaptionHeight

Získá nebo nastaví výšku popis oblasti v horní části okna.

CornerRadius

Získá nebo nastaví hodnotu, která označuje množství, které rohy okna jsou zaokrouhleny.

DependencyObjectType

DependencyObjectType Získá, který zabalí typ CLR této instance.

(Zděděno od DependencyObject)
Dispatcher

Získá přidruženou Dispatcher k tomuto DispatcherObject .

(Zděděno od DispatcherObject)
GlassFrameCompleteThickness

Získá jednotnou tloušťku -1.

GlassFrameThickness

Získá nebo nastaví hodnotu, která označuje šířku ohraničení skla kolem okna.

IsFrozen

Získá hodnotu, která označuje, zda objekt je aktuálně modifikovatelný.

(Zděděno od Freezable)
IsSealed

Získá hodnotu, která označuje, zda je tato instance aktuálně zapečetěna (jen pro čtení).

(Zděděno od DependencyObject)
NonClientFrameEdges

Získá nebo nastaví hodnotu, která označuje, které hrany rámečku okna nejsou vlastněny klientem.

ResizeBorderThickness

Získá nebo nastaví hodnotu, která označuje šířku ohraničení, která se používá ke změně velikosti okna.

UseAeroCaptionButtons

Získá nebo nastaví hodnotu, která označuje, zda je povoleno testování přístupů na windows Aero popis tlačítek.

Přidružené vlastnosti

IsHitTestVisibleInChrome

Představuje objekt, který popisuje přizpůsobení neklientskou oblast okna.

ResizeGripDirection

Představuje objekt, který popisuje přizpůsobení neklientskou oblast okna.

WindowChrome

Získá nebo nastaví instanci WindowChrome , která je připojena k okně.

Metody

CheckAccess()

Určuje, zda má volající vlákno přístup k tomuto DispatcherObject.

(Zděděno od DispatcherObject)
ClearValue(DependencyProperty)

Vymaže místní hodnotu vlastnosti. Vlastnost, která se má vymazat, je určena identifikátorem DependencyProperty .

(Zděděno od DependencyObject)
ClearValue(DependencyPropertyKey)

Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která se má vymazat, je určena parametrem DependencyPropertyKey.

(Zděděno od DependencyObject)
Clone()

Vytvoří upravitelný klon objektu Freezable, který vytváří hluboké kopie hodnot objektu. Při kopírování vlastností závislostí objektu tato metoda kopíruje výrazy (které už nemusí přeložit), ale ne animace nebo jejich aktuální hodnoty.

(Zděděno od Freezable)
CloneCore(Freezable)

Vytvoří instanci jako klon (hloubkovou kopii) zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností.

(Zděděno od Freezable)
CloneCurrentValue()

Vytvoří upravitelný klon (hloubkovou kopii) objektu Freezable s použitím jeho aktuálních hodnot.

(Zděděno od Freezable)
CloneCurrentValueCore(Freezable)

Vytvoří instanci jako upravitelný klon (hloubkovou kopii) zadaného Freezable pomocí aktuálních hodnot vlastností.

(Zděděno od Freezable)
CoerceValue(DependencyProperty)

Převede hodnotu zadané vlastnosti závislosti. Toho dosáhnete vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastnosti pro vlastnost závislosti, protože existuje ve volajícím DependencyObjectobjektu .

(Zděděno od DependencyObject)
CreateInstance()

Inicializuje novou instanci Freezable třídy.

(Zděděno od Freezable)
CreateInstanceCore()

Vytvoří novou instanci třídy WindowChrome.

Equals(Object)

Určuje, zda je zadaný DependencyObject ekvivalent k aktuálnímu DependencyObject.

(Zděděno od DependencyObject)
Freeze()

Nastaví aktuální objekt jako nemodifikovatelný a nastaví jeho IsFrozen vlastnost na true.

(Zděděno od Freezable)
FreezeCore(Boolean)

Způsobí, že Freezable objekt nebude možné upravit, nebo otestuje, jestli ho lze změnit.

(Zděděno od Freezable)
GetAsFrozen()

Vytvoří zamrzlou kopii objektu Freezable, pomocí základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, všechny zmrazené pod objekty jsou zkopírovány odkazem.

(Zděděno od Freezable)
GetAsFrozenCore(Freezable)

Vytvoří instanci jako zmrazený klon zadaného Freezable pomocí základních (neoměněných) hodnot vlastností.

(Zděděno od Freezable)
GetCurrentValueAsFrozen()

Vytvoří zmrazenou kopii Freezable pomocí aktuálních hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, všechny zmrazené pod objekty jsou zkopírovány odkazem.

(Zděděno od Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Vytvoří aktuální instanci jako zmrazený klon zadaného Freezableobjektu . Pokud má objekt animované vlastnosti závislostí, zkopírují se jeho aktuální animované hodnoty.

(Zděděno od Freezable)
GetHashCode()

Získá hash kód pro tento DependencyObject.

(Zděděno od DependencyObject)
GetIsHitTestVisibleInChrome(IInputElement)

Získá hodnotu IsHitTestVisibleInChrome připojené vlastnosti ze zadaného vstupního elementu.

GetLocalValueEnumerator()

Vytvoří specializovaný enumerátor pro určení vlastností závislostí, které mají místně nastavené hodnoty v tomto DependencyObjectobjektu .

(Zděděno od DependencyObject)
GetResizeGripDirection(IInputElement)

Získá hodnotu ResizeGripDirection připojené vlastnosti ze zadaného vstupního elementu.

GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
GetValue(DependencyProperty)

Vrátí aktuální efektivní hodnotu vlastnosti závislosti na této instanci objektu DependencyObject.

(Zděděno od DependencyObject)
GetWindowChrome(Window)

Získá hodnotu WindowChrome připojené vlastnosti ze zadané Window.

InvalidateProperty(DependencyProperty)

Znovu vyhodnotí efektivní hodnotu pro zadanou vlastnost závislosti.

(Zděděno od DependencyObject)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnChanged()

Volá se při změně aktuálního Freezable objektu.

(Zděděno od Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Zajišťuje, aby byly pro datový člen, který byl právě nastaven, vytvořeny odpovídající kontextové DependencyObjectType ukazatele.

(Zděděno od Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určen k použití přímo z vašeho kódu.

(Zděděno od Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Přepíše implementaci DependencyObject tak, OnPropertyChanged(DependencyPropertyChangedEventArgs) aby také vyvolala všechny Changed obslužné rutiny v reakci na měnící se vlastnost závislosti typu Freezable.

(Zděděno od Freezable)
ReadLocalValue(DependencyProperty)

Vrátí místní hodnotu vlastnosti závislosti, pokud existuje.

(Zděděno od DependencyObject)
ReadPreamble()

Zajišťuje, že Freezable se k souboru přistupuje z platného vlákna. Dědiči Freezable musí tuto metodu volat na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnosti závislostí.

(Zděděno od Freezable)
SetCurrentValue(DependencyProperty, Object)

Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnoty.

(Zděděno od DependencyObject)
SetIsHitTestVisibleInChrome(IInputElement, Boolean)

Nastaví hodnotu IsHitTestVisibleInChrome připojené vlastnosti u zadaného vstupního prvku.

SetResizeGripDirection(IInputElement, ResizeGripDirection)

Nastaví hodnotu ResizeGripDirection připojené vlastnosti u zadaného vstupního prvku.

SetValue(DependencyProperty, Object)

Nastaví místní hodnotu vlastnosti závislosti určenou identifikátorem vlastnosti závislosti.

(Zděděno od DependencyObject)
SetValue(DependencyPropertyKey, Object)

Nastaví místní hodnotu vlastnosti závislosti jen pro čtení určenou DependencyPropertyKey identifikátorem vlastnosti závislosti.

(Zděděno od DependencyObject)
SetWindowChrome(Window, WindowChrome)

Nastaví hodnotu WindowChrome připojené vlastnosti na zadaném Windowobjektu .

ShouldSerializeProperty(DependencyProperty)

Vrátí hodnotu, která označuje, zda serializační procesy mají serializovat hodnotu pro zadanou vlastnost závislosti.

(Zděděno od DependencyObject)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
VerifyAccess()

Vynutí, aby volající vlákno má přístup k tomuto DispatcherObject.

(Zděděno od DispatcherObject)
WritePostscript()

Changed Vyvolá událost pro Freezable a vyvolá její OnChanged() metodu. Třídy odvozené z Freezable by měly tuto metodu volat na konci libovolného rozhraní API, které upravuje členy třídy, které nejsou uloženy jako vlastnosti závislostí.

(Zděděno od Freezable)
WritePreamble()

Ověřuje, že Freezable objekt není zamrznutý a že se k němu přistupuje z platného kontextu podprocesů. Freezable Dědiče by měli tuto metodu volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnosti závislostí.

(Zděděno od Freezable)

Událost

Changed

Nastane při změně objektu Freezable nebo objektu, který obsahuje.

(Zděděno od Freezable)

Platí pro