Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Representa un objeto que describe las personalizaciones del área de no cliente de una ventana.
Jerarquía de herencia
System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Freezable
Microsoft.Windows.Shell.WindowChrome
Espacio de nombres: Microsoft.Windows.Shell
Ensamblado: Microsoft.Windows.Shell (en Microsoft.Windows.Shell.dll)
Sintaxis
'Declaración
Public Class WindowChrome _
Inherits Freezable
public class WindowChrome : Freezable
public ref class WindowChrome : public Freezable
type WindowChrome =
class
inherit Freezable
end
public class WindowChrome extends Freezable
El tipo WindowChrome expone los siguientes miembros.
Constructores
| Nombre | Descripción | |
|---|---|---|
![]() |
WindowChrome | Inicializa una nueva instancia de la clase WindowChrome. |
Arriba
Propiedades
| Nombre | Descripción | |
|---|---|---|
![]() |
CanFreeze | Obtiene un valor que indica si el objeto se puede convertir en no modificable. (Se hereda de Freezable). |
![]() |
CaptionHeight | Obtiene o establece el alto del área de un título en la parte superior de una ventana. |
![]() |
CornerRadius | Obtiene o establece un valor que indica la cantidad de esquinas de una ventana que están redondeadas. |
![]() |
DependencyObjectType | Obtiene el objeto DependencyObjectType que ajusta el tipo CLR de esta instancia. (Se hereda de DependencyObject). |
![]() |
Dispatcher | Obtiene el objeto Dispatcher al que está asociado DispatcherObject. (Se hereda de DispatcherObject). |
![]() ![]() |
GlassFrameCompleteThickness | Obtiene un grosor uniforme de -1. |
![]() |
GlassFrameThickness | Obtiene o establece un valor que indica el ancho del borde Glass alrededor de una ventana. |
![]() |
IsFrozen | Obtiene un valor que indica si el objeto es modificable actualmente. (Se hereda de Freezable). |
![]() |
IsSealed | Obtiene un valor que indica si esta instancia está actualmente sellada (es de solo lectura). (Se hereda de DependencyObject). |
![]() |
NonClientFrameEdges | Obtiene o establece un valor que indica qué bordes del marco de ventana no pertenecen al cliente. |
![]() |
ResizeBorderThickness | Obtiene o establece un valor que indica el ancho del borde que se usa para cambiar el tamaño de una ventana. |
![]() |
UseAeroCaptionButtons | Obtiene o establece un valor que indica si la prueba de posicionamiento está habilitada en los botones de título de Aero de Windows. |
Arriba
Propiedades asociadas
| Nombre | Descripción | |
|---|---|---|
![]() |
IsHitTestVisibleInChrome | Obtiene o establece un valor que indica si la prueba de posicionamiento de WPF está habilitada de parte de un elemento situado en el área de no cliente de una ventana. |
![]() |
ResizeGripDirection | Obtiene o establece un valor que indica la dirección del comportamiento del control de ajuste de tamaño en un elemento de entrada. |
![]() |
WindowChrome | Obtiene o establece la instancia de WindowChrome que se asocia a una ventana. |
Arriba
Métodos
| Nombre | Descripción | |
|---|---|---|
![]() |
CheckAccess | Determina si el subproceso de la llamada tiene acceso a DispatcherObject. (Se hereda de DispatcherObject). |
![]() |
ClearValue(DependencyProperty) | Borra el valor local de una propiedad.La propiedad que se va a borrar se especifica mediante un identificador de DependencyProperty. (Se hereda de DependencyObject). |
![]() |
ClearValue(DependencyPropertyKey) | Borra el valor local de una propiedad de sólo lectura.DependencyPropertyKey especifica la propiedad que se va a borrar. (Se hereda de DependencyObject). |
![]() |
Clone | Crea un clon modificable del objeto Freezable y hace copias en profundidad de sus valores.Al copiar las propiedades de dependencia del objeto, este método copia las expresiones (que puede que ya no se resuelvan) pero no las animaciones ni sus valores actuales. (Se hereda de Freezable). |
![]() |
CloneCore | Convierte la instancia en un clon (copia en profundidad) de la clase Freezable especificada con los valores de la propiedad base (no animada). (Se hereda de Freezable). |
![]() |
CloneCurrentValue | Crea un clon modificable (copia en profundidad) de Freezable con sus valores actuales. (Se hereda de Freezable). |
![]() |
CloneCurrentValueCore | Convierte la instancia en un clon modificable (en profundidad) del objeto Freezable especificado utilizando los valores de las propiedades actuales. (Se hereda de Freezable). |
![]() |
CoerceValue | Convierte el valor de la propiedad de dependencia especificada.Esto se logra invocando cualquier función de CoerceValueCallback especificada en los metadatos de la propiedad de dependencia cuando existe en el objeto DependencyObject de llamada. (Se hereda de DependencyObject). |
![]() |
CreateInstance | Inicializa una nueva instancia de la clase Freezable. (Se hereda de Freezable). |
![]() |
CreateInstanceCore | Crea una nueva instancia de la clase WindowChrome. (Invalida a Freezable.CreateInstanceCore()). |
![]() |
Equals | Determina si un objeto DependencyObject proporcionado es equivalente al objeto DependencyObject actual. (Se hereda de DependencyObject). |
![]() |
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
![]() |
Freeze | Convierte el objeto actual en no modificable y establece su propiedad IsFrozen en true. (Se hereda de Freezable). |
![]() |
FreezeCore | Convierte el objeto Freezable en no modificable o prueba si se puede convertir en no modificable. (Se hereda de Freezable). |
![]() |
GetAsFrozen | Crea una copia inmovilizada de Freezable, con los valores de la propiedad base (no animada).Puesto que se inmoviliza la copia, se copia cualquier subobjeto inmovilizado por referencia. (Se hereda de Freezable). |
![]() |
GetAsFrozenCore | Convierte la instancia en un clon inmovilizado de la clase Freezable especificada con los valores de la propiedad base (no animada). (Se hereda de Freezable). |
![]() |
GetCurrentValueAsFrozen | Crea una copia inmovilizada de Freezable con los valores de propiedad actuales.Puesto que se inmoviliza la copia, se copia cualquier subobjeto inmovilizado por referencia. (Se hereda de Freezable). |
![]() |
GetCurrentValueAsFrozenCore | Convierte la instancia actual en un clon inmovilizado de la clase Freezable especificada.Si el objeto tiene propiedades de dependencia animadas, se copian sus valores animados actuales. (Se hereda de Freezable). |
![]() |
GetHashCode | Obtiene un código hash de este objeto DependencyObject. (Se hereda de DependencyObject). |
![]() ![]() |
GetIsHitTestVisibleInChrome | Obtiene el valor de la propiedad adjunta IsHitTestVisibleInChrome del elemento de entrada especificado. |
![]() |
GetLocalValueEnumerator | Crea un enumerador especializado para determinar qué propiedades de dependencia han establecido localmente los valores en DependencyObject. (Se hereda de DependencyObject). |
![]() ![]() |
GetResizeGripDirection | Obtiene el valor de la propiedad adjunta ResizeGripDirection del elemento de entrada especificado. |
![]() |
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
![]() |
GetValue | Devuelve el valor efectivo actual de una propiedad de dependencia en esta instancia de DependencyObject. (Se hereda de DependencyObject). |
![]() ![]() |
GetWindowChrome | Obtiene el valor de la propiedad adjunta WindowChrome del objeto Window especificado. |
![]() |
InvalidateProperty | Vuelve a evaluar el valor efectivo para la propiedad de dependencia especificada. (Se hereda de DependencyObject). |
![]() |
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
![]() |
OnChanged | Se llama cuando se modifica el objeto Freezable actual. (Se hereda de Freezable). |
![]() |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) | Se asegura de que se establecen los punteros contextuales adecuados para un miembro de datos DependencyObjectType que se acaba de establecer. (Se hereda de Freezable). |
![]() |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) | Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no se debe usar directamente desde el código. (Se hereda de Freezable). |
![]() |
OnPropertyChanged | Invalida la implementación de DependencyObject de OnPropertyChanged para invocar también cualquier controlador Changed como respuesta a un cambio de propiedad de dependencia de tipo Freezable. (Se hereda de Freezable). |
![]() |
ReadLocalValue | Devuelve el valor local de una propiedad de dependencia, si existe. (Se hereda de DependencyObject). |
![]() |
ReadPreamble | Se asegura de que se tiene acceso a Freezable desde un subproceso válido.Los herederos de Freezable deben llamar a este método al inicio de las API que lean miembros de datos que no son propiedades de dependencia. (Se hereda de Freezable). |
![]() ![]() |
SetIsHitTestVisibleInChrome | Establece el valor de la propiedad adjunta IsHitTestVisibleInChrome del elemento de entrada especificado. |
![]() ![]() |
SetResizeGripDirection | Establece el valor de la propiedad adjunta ResizeGripDirection del elemento de entrada especificado. |
![]() |
SetValue(DependencyProperty, Object) | Establece el valor local de una propiedad de dependencia, especificado por su identificador de propiedad de dependencia. (Se hereda de DependencyObject). |
![]() |
SetValue(DependencyPropertyKey, Object) | Establece el valor local de una propiedad de dependencia de sólo lectura, especificado por el identificador DependencyPropertyKey de la propiedad de dependencia. (Se hereda de DependencyObject). |
![]() ![]() |
SetWindowChrome | Establece el valor de la propiedad adjunta WindowChrome del objeto Window especificado. |
![]() |
ShouldSerializeProperty | Devuelve un valor que indica si los procesos de serialización deben serializar el valor de la propiedad de dependencia proporcionada. (Se hereda de DependencyObject). |
![]() |
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
![]() |
VerifyAccess | Exige que el subproceso de la llamada tenga acceso a DispatcherObject. (Se hereda de DispatcherObject). |
![]() |
WritePostscript | Provoca el evento Changed de Freezable e invoca su método OnChanged.Las clases que se derivan de Freezable deben llamar a este método al final de cualquier API que modifique miembros de clase que no se almacenen como propiedades de dependencia. (Se hereda de Freezable). |
![]() |
WritePreamble | Comprueba que no se inmovilice Freezable y que se tiene acceso desde un contexto de subproceso válido.Los herederos de Freezable deben llamar a este método al inicio de cualquier API que escriba en miembros de datos que no sean propiedades de dependencia. (Se hereda de Freezable). |
Arriba
Eventos
| Nombre | Descripción | |
|---|---|---|
![]() |
Changed | Se produce cuando se modifican la clase Freezable o un objeto que la contiene. (Se hereda de Freezable). |
Arriba
Campos
| Nombre | Descripción | |
|---|---|---|
![]() ![]() |
CaptionHeightProperty | Identifica la propiedad de dependencia CaptionHeight. |
![]() ![]() |
CornerRadiusProperty | Identifica la propiedad de dependencia CornerRadius. |
![]() ![]() |
GlassFrameThicknessProperty | Identifica la propiedad de dependencia GlassFrameThickness. |
![]() ![]() |
IsHitTestVisibleInChromeProperty | Identifica la propiedad de dependencia IsHitTestVisibleInChrome. |
![]() ![]() |
NonClientFrameEdgesProperty | Identifica la propiedad de dependencia NonClientFrameEdges. |
![]() ![]() |
ResizeBorderThicknessProperty | Identifica la propiedad de dependencia ResizeBorderThickness. |
![]() ![]() |
ResizeGripDirectionProperty | Identifica la propiedad de dependencia ResizeGripDirection. |
![]() ![]() |
UseAeroCaptionButtonsProperty | Identifica la propiedad de dependencia UseAeroCaptionButtons. |
![]() ![]() |
WindowChromeProperty | Identifica la propiedad de dependencia WindowChrome. |
Arriba
Comentarios
La clase WindowChrome permite extender contenido de Windows Presentation Foundation (WPF) al área no cliente de una ventana normalmente reservada para el administrador de ventanas del sistema operativo.
Ventanas estándar
Las ventanas estándar se componen de dos rectángulos superpuestos. El rectángulo exterior es el área no cliente a la que se suele hacer referencia como cromo. Lo dibuja y administra el administrador de ventanas del sistema operativo. Sus dimensiones están determinadas por la configuración estándar del sistema operativo. El marco de no cliente proporciona características y comportamientos de ventana estándar. Entre ellos se incluyen los botones de título (Minimizar, Maximizar y Cerrar), el borde de la ventana, los comportamientos de cambio de tamaño y movimiento, el icono y título de la aplicación, y el menú del sistema. El rectángulo interior es el área cliente. Incluye el contenido de la aplicación, y esta lo dibuja y administra. Para obtener más información sobre Windows en aplicaciones para WPF, vea Información general sobre ventanas de WPF.
En la siguiente ilustración se muestran las partes de una ventana estándar.
.png)
Ventanas personalizadas
Puede personalizar un borde de ventana estableciendo la propiedad Window.WindowStyle en None o utilizando la clase WindowChrome.
WindowStyle.None
Una forma de personalizar el aspecto de una ventana de la aplicación WPF es establecer la propiedad Window.WindowStyle en None. Esto quita el marco de no cliente de la ventana y deja solamente el área cliente, en la que se puede aplicar un estilo personalizado. Sin embargo, cuando se quita el marco no cliente, también se pierden las características y los comportamientos del sistema que proporciona, como los botones de leyenda y el cambio el tamaño de la ventana. Otro efecto secundario es que la ventana cubrirá la barra de tareas de Windows al maximizarla. El establecimiento de WindowStyle.None permite crear una aplicación totalmente personalizada, pero también requiere la implementación de una lógica personalizada a la aplicación para emular el comportamiento estándar de la ventana.
WindowChrome
Para personalizar una ventana sin que pierda su funcionalidad estándar, puede usar la clase WindowChrome. La clase WindowChrome separa la funcionalidad del marco de ventana de las representaciones visuales y permite controlar el límite entre las áreas cliente y no cliente de la ventana de la aplicación. La clase WindowChrome permite incluir contenido de WPF en el marco de la ventana extendiendo el área cliente para que cubra el área no cliente. Al mismo tiempo, mantiene los comportamientos del sistema a través de dos áreas invisibles: el área de borde de cambio de tamaño y de título.
Hay dos partes principales para crear una ventana personalizada mediante la clase WindowChrome. En primer lugar, personalice la parte no cliente de la ventana estableciendo las propiedades expuestas en el objeto WindowChrome. A continuación, se proporciona una plantilla para la ventana que define la parte de la aplicación que se extiende al área no cliente. Las propiedades expuestas en el objeto WindowChrome son ResizeBorderThickness, CaptionHeight, CornerRadius y GlassFrameThickness.
La propiedad ResizeBorderThickness especifica un borde invisible alrededor del contorno de la ventana de la aplicación donde el usuario puede hacer clic y arrastrar para cambiar el tamaño de la ventana.
La propiedad CaptionHeight especifica un área invisible en la parte superior de la ventana que habilita los comportamientos del sistema normalmente asociados a la barra de título. Entre estos comportamientos se incluye: hacer clic y arrastrar para mover la ventana, hacer doble clic para maximizar la ventana, y hacer clic con el botón secundario para mostrar el menú del sistema.
El borde de cambio de tamaño y el área de título no tienen ningún elemento visual; solo definen áreas que responden a entradas y habilitan comportamientos de ventana estándar proporcionados por el sistema.
La propiedad CornerRadius especifica cuánto se redondean las esquinas de la ventana. Esta propiedad no tiene ningún efecto si el marco Glass está habilitado para una ventana.
La propiedad GlassFrameThickness especifica el ancho del marco Glass alrededor de la ventana. De forma predeterminada, utiliza el valor del sistema especificado por la propiedad WindowNonClientFrameThickness para emular el aspecto de una ventana estándar. Cuando se utiliza el marco Glass, los botones de título para Minimizar, Maximizan y Cerrar están visibles e interactivos. La aplicación es responsable de mostrar el icono de aplicación y el texto de la leyenda. Puede establecer la propiedad GlassFrameThickness para hacer que el marco Glass sea más ancho o más estrecho que el valor predeterminado.
Precaución |
|---|
El tamaño de los botones de título no se modifica al cambiar la propiedad GlassFrameThickness.Si el alto de la parte superior del marco Glass es inferior al alto de los botones de título, estos botones no serán totalmente visibles. |
Para crear una ventana personalizada que no tenga un marco Glass, establezca la propiedad GlassFrameThickness en un valor uniforme de 0. Esto deshabilitará y ocultará los botones de título estándar.
Para extender el marco Glass de forma que cubra la ventana completa, establezca la propiedad GlassFrameThickness en un valor negativo en cualquier lado. Cuando la propiedad GlassFrameThickness está establecida en un valor negativo en algún lado, su valor convertido será igual a GlassFrameCompleteThickness.
Nota |
|---|
Aero es un conjunto de mejoras visuales de la apariencia y funcionalidad del escritorio de Windows que se introdujo en Windows vista.Una de las características visualmente más obvias de Aero son los bordes de ventana de cristal translúcido.La característica de composición de escritorio del Administrador de ventanas de escritorio (DWM) habilita Windows Aero. |
Los efectos Glass de Windows Aero no se admiten en todos los sistemas operativos, y pueden deshabilitarse en los sistemas operativos compatibles. Si Windows Aero no está disponible, el marco Glass no se mostrará, independientemente del valor de propiedad GlassFrameThickness. El área del borde especificada por esta propiedad aparecerá en negro en su lugar. Compruebe la propiedad IsGlassEnabled para asegurarse de que los efectos Glass de Windows Aero están disponibles. Si los efectos Glass no están disponibles, debe proporcionar un estilo de ventana alternativa que no utilice el marco Glass ni la ventana estándar estableciendo el estilo de ventana en null.
Puede ampliar su contenido de WPF al marco de la ventana; para ello, especifique un elemento ControlTemplate que defina la apariencia y el comportamiento del contenido del marco. Establezca el elemento TargetType de ControlTemplate en el tipo de la ventana que está personalizando.
<ControlTemplate TargetType="{x:Type local:MainWindow}">
De forma predeterminada, las partes de todo elemento visual dentro del área no cliente de la ventana no son interactivas. Para habilitar los elementos interactivos en el área no cliente, asocie la propiedad WindowsChrome.IsHitTestVisibleInChrome adjunta al elemento y establézcala en true.
El siguiente marcado XAML muestra los elementos principales necesarios para personalizar una ventana utilizando la clase 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>
El primer método Set adjunta el objeto WindowChrome a la ventana. Usa todos los valores predeterminados para las propiedades WindowChrome, lo que hace que la ventana se asemeje a una ventana estándar.
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
La plantilla de ventana debe especificar un presentador de contenido para mostrar el contenido de la ventana especificada en la aplicación. De manera predeterminada, la clase WindowChrome extiende el área cliente para cubrir el borde no cliente. Para descubrir el marco Glass, debe especificar un margen alrededor de ContentPresenter. Este marcado especifica un borde con un fondo blanco alrededor del presentador de contenido para emular el aspecto de una ventana estándar. También especifica un margen enlazado a la propiedad WindowNonClientFrameThickness, que obtiene el ancho predeterminado del sistema para el marco.
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
La clase WindowChrome no muestra el título y el icono de la aplicación; estos deben agregarse al borde como contenido personalizado. El XAML siguiente agrega una imagen y un bloque de texto para mostrar el icono y el título. Ambos elementos se enlazan a las propiedades correspondientes de la ventana. El ancho de la imagen se enlaza al ancho de SmallIconSize, que obtiene el tamaño predeterminado del sistema para el icono. La propiedad IsHitTestVisibleInChrome adjunta se establece en la imagen para que pueda recibir eventos de mouse.
<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"/>
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
.gif)
.gif)
.gif)
.gif)
.gif)
.gif)
Precaución
Nota