WindowChrome Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje objekt, který popisuje přizpůsobení oblasti mimo klient 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 neklizenské oblasti okna, která je obvykle vyhrazena pro správce oken operačního systému.
Standardní windows
Standardní okna se skládají ze dvou překrývajících se obdélníků. Vnější obdélník je neklidská oblast, která se často označuje jako chrome. Je nakreslen a spravován správcem 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í oken. Patří mezi ně tlačítka titulků (minimalizovat, maximalizovat a zavřít), ohraničení okna, změna velikosti a přesunutí chování, ikona a název aplikace a systémová nabídka. Vnitřní obdélník je klientská oblast. Obsahuje obsah vaší aplikace a je nakreslený a spravovaný aplikací. Další informace o windows v aplikacích WPF naleznete v tématu Přehled systému Windows WPF.
Následující obrázek znázorňuje části standardního okna.
Vlastní windows
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 ne client frame a ponechá se jenom oblast klienta, na kterou můžete použít vlastní styl. Když se ale odebere rámec jiného klienta, ztratíte také systémové funkce a chování, které poskytuje, například tlačítka titulků a změna velikosti okna. Dalším vedlejším efektem je, že okno při maximalizaci pokrývá hlavní panel Windows. Nastavení WindowStyle.None umožňuje vytvořit zcela vlastní aplikaci, ale také vyžaduje, abyste ve své aplikaci implementovali vlastní logiku pro emulaci standardního chování okna.
WindowChrome
Pokud chcete okno přizpůsobit při zachování jeho standardních funkcí, můžete použít WindowChrome třídu. Třída WindowChrome odděluje funkce rámečku okna od vizuálů a umožňuje řídit hranici mezi klientem 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ývala nekližní oblast. Současně zachovává chování systému prostřednictvím dvou neviditelných oblastí; změna velikosti oblastí ohraničení a titulků
Existují dvě hlavní části pro vytvoření vlastního okna pomocí WindowChrome třídy. Nejprve přizpůsobíte neklimentskou část okna nastavením vlastností vystavených v objektu WindowChrome . Pak zadáte šablonu pro okno, které definuje část vaší aplikace, která je rozšířena do jiné než klientské oblasti. Vlastnosti vystavené na objektu WindowChrome jsou ResizeBorderThickness, CaptionHeight, CornerRadiusa 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. K těmto chováním patří: kliknutím a přetažením se okno přesune, poklikáním okno maximalizujete a kliknutím pravým tlačítkem myši zobrazíte systémovou nabídku.
Změna velikosti oblasti ohraničení a titulku neobsahuje žádné vizuální prvky; definují pouze oblasti, které reagují na vstup a umožňují standardní chování oken poskytovaných systémem.
Vlastnost CornerRadius určuje množství, které rohy okna jsou zaokrouhleny. Tato vlastnost nemá žádný vliv, pokud je pro okno povolený skleněný rám.
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 titulků pro minimalizaci, maximalizaci a zavření viditelné a interaktivní. Aplikace zodpovídá za zobrazení ikony aplikace a textu titulku. Vlastnost můžete nastavit GlassFrameThickness tak, aby byl rám skla širší nebo užší než výchozí.
Upozornění
Velikost tlačítek titulků se při změně vlastnosti nezmění GlassFrameThickness . Pokud je výška horní části skleněného rámečku menší než výška tlačítek titulků, nebudou tlačítka titulků úplně viditelná.
Chcete-li 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 titulků.
Chcete-li rozšířit rám skla tak, aby pokrývala celé okno, nastavte GlassFrameThickness vlastnost na zápornou hodnotu na libovolné straně. GlassFrameThickness Pokud je vlastnost nastavena na zápornou hodnotu pro libovolnou stranu, jeho vyučovací hodnota bude rovna GlassFrameCompleteThickness.
Poznámka:
Aero je sada vizuálních vylepšení vzhledu a funkčnosti plochy Windows, která byla představena v systému Windows Vista. Jedním z nejvýzornějších rysů Aero je průsvitné ohraničení oken. Windows Aero je povolena funkcí složení plochy Správce desktopových oken (DWM).
Windows Aero glass effects are not supported on all operating systems, and can be disabled on supported operating systems. Pokud windows Aero není k dispozici, nezobrazí se rámeček skla bez ohledu na GlassFrameThickness hodnotu vlastnosti. Místo toho bude oblast ohraničení určená touto vlastností černá. IsGlassEnabled Zkontrolujte vlastnost a ověřte, jestli jsou k dispozici efekty Windows Aero. Pokud skleněné efekty nejsou k dispozici, měli byste zadat alternativní styl okna, který nepoužívá skleněný rámeček nebo standardní okno nastavením stylu okna na hodnotu null.
Rozšíříte obsah WPF do rámečku okna zadáním ControlTemplate, který definuje vzhled a chování obsahu rámce. Typ TargetType ovládacího prvku ControlTemplate nastavíte na typ okna, které upravujete.
<ControlTemplate TargetType="{x:Type local:MainWindow}">
Ve výchozím nastavení nejsou části všech vizuálních prvků, které jsou v neklizené oblasti okna, interaktivní. Chcete-li povolit interaktivní prvky v neklimatické oblasti, připojte WindowsChrome.IsHitTestVisibleInChrome připojenou vlastnost k elementu a nastavte jej na true.
Následující kód XAML ukazuje hlavní prvky potřebné k přizpůsobení okna pomocí Třídy 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>
První setter připojí WindowChrome k oknem. Pro vlastnosti WindowChrome používá všechny výchozí hodnoty, takže okno vypadá jako standardní okno.
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
Šablona okna musí zadat prezentujícího obsahu, který zobrazí obsah okna zadaného ve vaší aplikaci. Třída WindowChrome ve výchozím nastavení rozšiřuje klientskou oblast tak, aby pokrývala neklimatické ohraničení. K odkrytí skleněného rámečku je potřeba zadat okraj kolem ContentPresenteru. Tento kód 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 vázán na 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 a název aplikace nejsou zobrazeny Třídy WindowChrome; Musí být přidány na ohraničení jako vlastní obsah. Následující XAML přidá obrázek a textový blok pro zobrazení ikony a názvu. Oba prvky jsou svázané 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. Vlastnost IsHitTestVisibleInChrome je nastavena na obrázku, 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
| Name | Description |
|---|---|
| WindowChrome() |
Inicializuje novou instanci WindowChrome třídy. |
Pole
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| CanFreeze |
Získá hodnotu, která označuje, zda objekt lze vytvořit nemodifovatelný. (Zděděno od Freezable) |
| CaptionHeight |
Získá nebo nastaví výšku oblasti titulků v horní části okna. |
| CornerRadius |
Získá nebo nastaví hodnotu, která označuje množství, které rohy okna jsou zaokrouhleny. |
| DependencyObjectType |
DependencyObjectType Získá ten, který zabalí typ CLR této instance. (Zděděno od DependencyObject) |
| Dispatcher |
Dispatcher Získá toto DispatcherObject je přidružené. (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ě upravitelný. (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é slouží ke změně velikosti okna. |
| UseAeroCaptionButtons |
Získá nebo nastaví hodnotu, která označuje, zda je povoleno testování hit-testování na tlačítkách titulků Windows Aero. |
Přidružené vlastnosti
| Name | Description |
|---|---|
| IsHitTestVisibleInChrome |
Představuje objekt, který popisuje přizpůsobení oblasti mimo klient okna. |
| ResizeGripDirection |
Představuje objekt, který popisuje přizpůsobení oblasti mimo klient okna. |
| WindowChrome |
Získá nebo nastaví instanci WindowChrome , která je připojena k okně. |
Metody
| Name | Description |
|---|---|
| CheckAccess() |
Určuje, zda volající vlákno má 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á má být vymazána, je určena parametrem DependencyPropertyKey. (Zděděno od DependencyObject) |
| Clone() |
Vytvoří upravitelný klon objektu Freezable, vytváření hlubokých kopií hodnot objektu. Při kopírování vlastností závislostí objektu tato metoda kopíruje výrazy (které se už nemusí překládat), ale ne animace nebo jejich aktuální hodnoty. (Zděděno od Freezable) |
| CloneCore(Freezable) |
Vytvoří instanci klonem (hloubkovou kopií) zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností. (Zděděno od Freezable) |
| CloneCurrentValue() |
Vytvoří upravitelný klon (hloubkovou Freezable kopii) pomocí aktuálních hodnot. (Zděděno od Freezable) |
| CloneCurrentValueCore(Freezable) |
Vytvoří instanci 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 se dosahuje vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastností pro vlastnost závislosti, protože existuje ve volání DependencyObject. (Zděděno od DependencyObject) |
| CreateInstance() |
Inicializuje novou instanci Freezable třídy. (Zděděno od Freezable) |
| CreateInstanceCore() |
Vytvoří novou instanci WindowChrome třídy. |
| Equals(Object) |
Určuje, zda je poskytnutá DependencyObject hodnota ekvivalentní aktuálnímu DependencyObject. (Zděděno od DependencyObject) |
| Freeze() |
Nastaví aktuální objekt jako nemodifikovatelný a nastaví jeho IsFrozen vlastnost na |
| FreezeCore(Boolean) |
Freezable Znepřístupňuje objekt nebo testuje, zda je možné ho upravit. (Zděděno od Freezable) |
| GetAsFrozen() |
Vytvoří zablokovanou kopii Freezablevlastnosti , pomocí základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že je kopie zablokovaná, všechny ukotvené dílčí objekty se zkopírují odkazem. (Zděděno od Freezable) |
| GetAsFrozenCore(Freezable) |
Vytvoří instanci ukotveným klonem zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností. (Zděděno od Freezable) |
| GetCurrentValueAsFrozen() |
Vytvoří ukotvenou kopii s použitím aktuálních Freezable hodnot vlastností. Vzhledem k tomu, že je kopie zablokovaná, všechny ukotvené dílčí objekty se zkopírují odkazem. (Zděděno od Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Vytvoří aktuální instanci zmrazený klon zadaného Freezable. Pokud má objekt animované vlastnosti závislostí, jejich aktuální animované hodnoty se zkopírují. (Zděděno od Freezable) |
| GetHashCode() |
Získá hash kód pro tento DependencyObject. (Zděděno od DependencyObject) |
| GetIsHitTestVisibleInChrome(IInputElement) |
Získá hodnotu připojené vlastnosti ze zadaného vstupního IsHitTestVisibleInChrome prvku. |
| GetLocalValueEnumerator() |
Vytvoří specializovaný enumerátor pro určení, které vlastnosti závislosti mají místně nastavené hodnoty na tomto DependencyObject. (Zděděno od DependencyObject) |
| GetResizeGripDirection(IInputElement) |
Získá hodnotu připojené vlastnosti ze zadaného vstupního ResizeGripDirection prvku. |
| GetType() |
Získá Type aktuální instance. (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ého 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 Object. (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, 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) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Zajišťuje, aby byly pro datový člen, který byl právě nastaven, vytvořeny DependencyObjectType příslušné kontextové ukazatele. (Zděděno od Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Přepíše implementaci DependencyObjectOnPropertyChanged(DependencyPropertyChangedEventArgs) také vyvolat všechny Changed obslužné rutiny v reakci na měnící se závislost vlastnost 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 se k němu Freezable přistupuje z platného vlákna. Dědiče Freezable této metody musí volat tuto metodu na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnostmi závislosti. (Zděděno od Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnot. (Zděděno od DependencyObject) |
| SetIsHitTestVisibleInChrome(IInputElement, Boolean) |
Nastaví hodnotu připojené vlastnosti u zadaného vstupního IsHitTestVisibleInChrome prvku. |
| SetResizeGripDirection(IInputElement, ResizeGripDirection) |
Nastaví hodnotu připojené vlastnosti u zadaného vstupního ResizeGripDirection prvku. |
| SetValue(DependencyProperty, Object) |
Nastaví místní hodnotu vlastnosti závislosti určenou jeho 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 identifikátorem DependencyPropertyKey vlastnosti závislosti. (Zděděno od DependencyObject) |
| SetWindowChrome(Window, WindowChrome) |
Nastaví hodnotu WindowChrome připojené vlastnosti v zadaném Window. |
| ShouldSerializeProperty(DependencyProperty) |
Vrátí hodnotu, která určuje, zda procesy serializace 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() |
Vynucuje, že volající vlákno má přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
| WritePostscript() |
Changed Vyvolá událost pro událost Freezable a vyvolá její OnChanged() metodu. Třídy odvozené z Freezable by měly volat tuto metodu na konci jakéhokoli rozhraní API, které upravuje členy třídy, které nejsou uloženy jako vlastnosti závislosti. (Zděděno od Freezable) |
| WritePreamble() |
Ověřuje, že Freezable není zablokovaný a že k němu přistupujete z platného kontextu podprocesu. Freezable dědiče by měly tuto metodu volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnostmi závislosti. (Zděděno od Freezable) |
Událost
| Name | Description |
|---|---|
| Changed |
Nastane, když Freezable je objekt, který obsahuje, změněn. (Zděděno od Freezable) |