Classe WindowChrome
Representa um objeto que descreve as personalizações para a área não-cliente de uma janela.
Hierarquia de herança
System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Freezable
Microsoft.Windows.Shell.WindowChrome
Namespace: Microsoft.Windows.Shell
Assembly: Microsoft.Windows.Shell (em Microsoft.Windows.Shell.dll)
Sintaxe
'Declaração
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
O tipo WindowChrome expõe os membros a seguir.
Construtores
Nome | Descrição | |
---|---|---|
WindowChrome | Initializes a new instance of the WindowChrome class. |
Início
Propriedades
Nome | Descrição | |
---|---|---|
CanFreeze | Obtém um valor que indica se o objeto pode ser feito unmodifiable. (Herdado de Freezable.) | |
CaptionHeight | Obtém ou define a altura da área de legenda na parte superior de uma janela. | |
CornerRadius | Obtém ou define um valor que indica a quantidade que os cantos de uma janela são arredondados. | |
DependencyObjectType | Obtém o DependencyObjectType que envolve o CLR tipo de instância. (Herdado de DependencyObject.) | |
Dispatcher | Obtém o Dispatcher Este DispatcherObject está associado. (Herdado de DispatcherObject.) | |
GlassFrameCompleteThickness | Obtém uma espessura uniforme de -1. | |
GlassFrameThickness | Obtém ou define um valor que indica a largura da borda ao redor de uma janela de vidro. | |
IsFrozen | Obtém um valor que indica se o objeto é modificável atualmente. (Herdado de Freezable.) | |
IsSealed | Obtém um valor que indica se essa instância atualmente está lacrada (somente para leitura). (Herdado de DependencyObject.) | |
NonClientFrameEdges | Obtém ou define um valor que indica que bordas da moldura da janela não pertencem ao cliente. | |
ResizeBorderThickness | Obtém ou define um valor que indica a largura da borda que é usada para redimensionar uma janela. | |
UseAeroCaptionButtons | Obtém ou define um valor que indica se o teste de impacto é habilitado nos botões de legenda Windows Aero. |
Início
Propriedades anexadas
Nome | Descrição | |
---|---|---|
IsHitTestVisibleInChrome | Obtém ou define um valor que indica se o teste de impacto do WPF é ativado a parte de um elemento que está na área não-cliente de uma janela. | |
ResizeGripDirection | Obtém ou define um valor que indica a direção do comportamento de alça de redimensionamento em um elemento de entrada. | |
WindowChrome | Obtém ou define a instância de WindowChrome que está conectado a uma janela. |
Início
Métodos
Nome | Descrição | |
---|---|---|
CheckAccess | Determina se o segmento de chamada tem acesso a este DispatcherObject. (Herdado de DispatcherObject.) | |
ClearValue(DependencyProperty) | Limpa o valor local de uma propriedade.A propriedade seja limpo é especificada por um DependencyProperty identificador. (Herdado de DependencyObject.) | |
ClearValue(DependencyPropertyKey) | Limpa o valor local de uma propriedade somente leitura.A propriedade seja limpo é especificada por um DependencyPropertyKey. (Herdado de DependencyObject.) | |
Clone | Cria um clone modificável do Freezable, fazendo cópias profunda de todos os valores. do objetoAo copiar propriedades de dependência do objeto, esse método copia expressões (que não mais poderão resolver) mas não animações ou seus valores atuais. (Herdado de Freezable.) | |
CloneCore | Torna a instância um clone (cópia profunda) especificado Freezable usando valores de propriedade de base (sem animação). (Herdado de Freezable.) | |
CloneCurrentValue | Cria um clone modificável (cópia em profundidade) da Freezable usando seus valores atuais. (Herdado de Freezable.) | |
CloneCurrentValueCore | Torna a instância um clone modificável (cópia em profundidade) especificado Freezable usando valores de propriedade atual. (Herdado de Freezable.) | |
CoerceValue | Converte o valor especificado propriedade de dependência.Isso é feito chamando qualquer CoerceValueCallback especificada nos metadados de propriedade para a propriedade de dependência conforme ela existe na chamada de função DependencyObject. (Herdado de DependencyObject.) | |
CreateInstance | Initializes a new instance of the Freezable class. (Herdado de Freezable.) | |
CreateInstanceCore | Creates a new instance of the WindowChrome class. (Substitui Freezable.CreateInstanceCore().) | |
Equals | Determina se um fornecido DependencyObject é equivalente à atual DependencyObject. (Herdado de DependencyObject.) | |
Finalize | Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado pela coleta de lixo. (Herdado de Object.) | |
Freeze | Torna o objeto atual unmodifiable e define sua IsFrozen propriedade para true. (Herdado de Freezable.) | |
FreezeCore | Faz o Freezable object unmodifiable ou testa se podem ser feita unmodifiable. (Herdado de Freezable.) | |
GetAsFrozen | Cria uma cópia congelada a Freezable, usando valores de propriedade de base (sem animação).Porque a cópia está congelada, qualquer subobjetos congelados são copiados por referência. (Herdado de Freezable.) | |
GetAsFrozenCore | Torna a instância um clone congelado especificado Freezable usando valores de propriedade de base (sem animação). (Herdado de Freezable.) | |
GetCurrentValueAsFrozen | Cria uma cópia congelada a Freezable usando valores de propriedade atual.Porque a cópia está congelada, qualquer subobjetos congelados são copiados por referência. (Herdado de Freezable.) | |
GetCurrentValueAsFrozenCore | Torna a instância atual de um clone congelado especificado Freezable.Se o objeto tem propriedades de dependência animado, seus valores atuais de animados são copiados. (Herdado de Freezable.) | |
GetHashCode | Obtém um código de hash para este DependencyObject. (Herdado de DependencyObject.) | |
GetIsHitTestVisibleInChrome | Obtém o valor da IsHitTestVisibleInChrome anexado a propriedade de um elemento de entrada especificado. | |
GetLocalValueEnumerator | Cria um enumerador especializado para determinar quais propriedades de dependência localmente têm definir valores nessa DependencyObject. (Herdado de DependencyObject.) | |
GetResizeGripDirection | Obtém o valor da ResizeGripDirection anexado a propriedade de um elemento de entrada especificado. | |
GetType | Obtém o Type da instância atual. (Herdado de Object.) | |
GetValue | Retorna o valor efetivo atual de um propriedade de dependência nesta instância de um DependencyObject. (Herdado de DependencyObject.) | |
GetWindowChrome | Obtém o valor da WindowChrome anexado a propriedade especificada Window. | |
InvalidateProperty | Avalia o valor efetivo de propriedade de dependência especificado (Herdado de DependencyObject.) | |
MemberwiseClone | Cria uma cópia superficial do atual Object. (Herdado de Object.) | |
OnChanged | Chamado quando o atual Freezable objeto é modificado. (Herdado de Freezable.) | |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) | Garante que os ponteiros de contexto apropriado estiver estabelecidos para um DependencyObjectType o membro de dados que acabou de ser definido. (Herdado de Freezable.) | |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) | Este membro dá suporte a Windows Presentation Foundation (WPF) infra-estrutura e não se destina a ser usado diretamente em seu código. (Herdado de Freezable.) | |
OnPropertyChanged | Substitui o DependencyObject a implementação de OnPropertyChanged também chamar Changed manipuladores em resposta a uma alteração propriedade de dependência do tipo Freezable. (Herdado de Freezable.) | |
ReadLocalValue | Retorna o valor de local de um propriedade de dependência, se ele existir. (Herdado de DependencyObject.) | |
ReadPreamble | Garante que o Freezable está sendo acessado de um segmento válido.Os herdeiros de Freezable deve chamar esse método no início de qualquer API que lê os membros de dados que são não dependência propriedades. (Herdado de Freezable.) | |
SetIsHitTestVisibleInChrome | Define o valor de IsHitTestVisibleInChrome anexado propriedade em um elemento de entrada especificado. | |
SetResizeGripDirection | Define o valor de ResizeGripDirection anexado propriedade em um elemento de entrada especificado. | |
SetValue(DependencyProperty, Object) | Define o valor de local de um propriedade de dependência, especificado por seu identificador de propriedade de dependência. (Herdado de DependencyObject.) | |
SetValue(DependencyPropertyKey, Object) | Define o valor de local de somente leitura propriedade de dependência, especificado pelo DependencyPropertyKey identificador de propriedade de dependência. (Herdado de DependencyObject.) | |
SetWindowChrome | Define o valor de WindowChrome anexado a propriedade especificada Window. | |
ShouldSerializeProperty | Retorna um valor que indica se os processos de serialização devem serializar o valor para o fornecido propriedade de dependência. (Herdado de DependencyObject.) | |
ToString | Retorna um string que representa o objeto atual. (Herdado de Object.) | |
VerifyAccess | Impõe que o thread de chamada tem acesso a este DispatcherObject. (Herdado de DispatcherObject.) | |
WritePostscript | Eleva o Changed evento para o Freezable e invoca seu OnChanged método.Classes que derivam de Freezable deve chamar este método no final de qualquer API que modifica os membros de classe que não são armazenados como Propriedades de dependência. (Herdado de Freezable.) | |
WritePreamble | Verifica se o Freezable não está congelada e que ele está sendo acessado a partir de um contexto de segmentação válido.Freezableos herdeiros devem chamar esse método no início de qualquer API que grava os membros de dados que são não dependência propriedades. (Herdado de Freezable.) |
Início
Eventos
Nome | Descrição | |
---|---|---|
Changed | Ocorre quando o Freezable ou um objeto que ele contém é modificado. (Herdado de Freezable.) |
Início
Campos
Nome | Descrição | |
---|---|---|
CaptionHeightProperty | Identifica o CaptionHeight propriedade de dependência. | |
CornerRadiusProperty | Identifica o CornerRadius propriedade de dependência. | |
GlassFrameThicknessProperty | Identifica o GlassFrameThickness propriedade de dependência. | |
IsHitTestVisibleInChromeProperty | Identifica o IsHitTestVisibleInChrome propriedade de dependência. | |
NonClientFrameEdgesProperty | Identifica o NonClientFrameEdges propriedade de dependência. | |
ResizeBorderThicknessProperty | Identifica o ResizeBorderThickness propriedade de dependência. | |
ResizeGripDirectionProperty | Identifica o ResizeGripDirection propriedade de dependência. | |
UseAeroCaptionButtonsProperty | Identifica o UseAeroCaptionButtons propriedade de dependência. | |
WindowChromeProperty | Identifica o WindowChrome propriedade de dependência. |
Início
Comentários
O WindowChrome classe permite que você amplie o conteúdo de Windows Presentation Foundation (WPF) para a área de não-cliente de uma janela que normalmente é reservada para o Gerenciador de janela do sistema operacional.
Padrão do Windows
Padrão do windows é composto de dois retângulos sobrepostos. O retângulo externo é o área não cliente, que é conhecida como cromo. Ele é desenhado e gerenciado pelo Gerenciador de janelas do sistema operacional. Suas dimensões são determinadas pelas configurações de sistema operacional padrão. O quadro não-cliente fornece recursos de janela padrão e comportamentos. Estes incluem os botões de legenda (minimizar, maximizar e fechar), a borda da janela, redimensionar e mover comportamentos, o ícone do aplicativo e título e o menu do sistema. O retângulo interno é o área do cliente. Ele contém o conteúdo do seu aplicativo e ele é desenhado e gerenciado pela aplicação. Para obter mais informações sobre o windows em aplicativos WPF, consulte Visão geral do WPF do Windows.
A ilustração a seguir mostra as partes de uma janela padrão.
Windows personalizado
Você pode personalizar a borda da janela, definindo a Window.WindowStyle propriedade para None ou usando o WindowChrome classe.
WindowStyle. None
Uma maneira de personalizar a aparência de uma janela de aplicativo do WPF é definir o Window.WindowStyle propriedade para None. Isso remove o quadro não-cliente da janela e deixa apenas a área de cliente, ao qual você pode aplicar um estilo personalizado. No entanto, quando o quadro não-cliente for removido, você também perderá os recursos de sistema e comportamentos que fornece, como botões de legenda e o redimensionamento de janela. Outro efeito colateral é que a janela abordará a barra de tarefas do Windows quando ele estiver maximizado. Definindo WindowStyle.None permite que você crie um aplicativo totalmente personalizado, mas também requer que você implemente a lógica personalizada em seu aplicativo para emular o comportamento de janela padrão.
WindowChrome
Para personalizar uma janela, mantendo sua funcionalidade padrão, você pode usar o WindowChrome classe. O WindowChrome classe separa a funcionalidade da moldura da janela do visuais e permite controlar o limite entre o cliente e as áreas de não-cliente do seu aplicativo de janela. O WindowChrome classe permite colocar o conteúdo do WPF no quadro de janela, estendendo a área do cliente para cobrir a área não-cliente. Ao mesmo tempo, ele retém os comportamentos do sistema por meio de duas áreas invisíveis; o Redimensionar borda e legenda áreas.
Existem duas partes principais para a criação de uma janela personalizada usando o WindowChrome classe. Primeiro, você pode personalizar a parte não-cliente da janela, definindo as propriedades expostas na WindowChrome objeto. Em seguida, você deve fornecer um modelo para a janela que define a parte do seu aplicativo que é estendido para a área não cliente.As propriedades expostas na WindowChrome objeto são ResizeBorderThickness, CaptionHeight, CornerRadius, e GlassFrameThickness.
O ResizeBorderThickness propriedade especifica uma borda invisível ao redor de fora da janela do aplicativo que o usuário pode clicar e arrastar para redimensionar a janela.
O CaptionHeight propriedade especifica uma área invisível na parte superior da janela que permite que os comportamentos de sistema normalmente associados com a barra de título. Esses comportamentos incluem: Clique e arraste para mover a janela, clique duas vezes para maximizar a janela e clique com o botão direito para mostrar o menu do sistema.
Área Redimensionar borda e a legenda não tem elementos visuais; eles só pode definir áreas que respondam à entrada e ativar os comportamentos de janela padrão do fornecido pelo sistema.
O CornerRadius propriedade especifica a quantidade que os cantos da janela são arredondados. Esta propriedade não tem qualquer efeito se o quadro de vidro está habilitado para uma janela.
O GlassFrameThickness propriedade especifica a largura do quadro de vidro ao redor da janela. Por padrão, ele usa o valor de sistema especificado pelo WindowNonClientFrameThickness propriedade para emular a aparência de uma janela padrão. Quando o quadro de vidro é usado, os botões de legenda para minimizar, maximizar e fechar estão visíveis e interativo. O aplicativo é responsável por exibir o texto de ícone e a legenda do aplicativo. Você pode definir o GlassFrameThickness propriedade para tornar o quadro de vidro alargar ou estreitar o padrão.
Cuidado |
---|
O tamanho dos botões de legenda não é alterado quando o GlassFrameThickness propriedade é alterada.Se a altura da parte superior do quadro de vidro for menor do que a altura dos botões de legenda, os botões de legenda não será completamente visíveis. |
Para tornar uma janela personalizada que não possui um quadro de vidro, defina a GlassFrameThickness propriedade para um valor uniforme 0. Isso irá desativar e ocultar os botões de legenda padrão.
Para estender o quadro de vidro para cobrir toda a janela, defina a GlassFrameThickness a propriedade com um valor negativo na lateral. Quando o GlassFrameThickness for definida como um valor negativo para qualquer lado, seu valor coagido será igual a GlassFrameCompleteThickness.
Observação
Aero são um conjunto de aprimoramentos visuais na aparência e funcionalidade de área de trabalho da Windows foi introduzida no Windows Vista.Um dos recursos do Aero visualmente mais óbvios é que as bordas da janela de vidro translúcido.Windows Aero é ativado pelo recurso de composição da área de trabalho de Desktop Window Manager (DWM).
Os efeitos do Windows Aero glass não são suportados em todos os sistemas operacionais e podem ser desabilitados em sistemas operacionais suportados. Se o Windows Aero não está disponível, o quadro de vidro não será exibido independentemente do GlassFrameThickness valor da propriedade. A área de borda especificada por esta propriedade aparecerá em preta em vez disso.Verifique o IsGlassEnabled propriedade para verificar se os efeitos do Windows Aero glass estão disponíveis. Se os efeitos de vidro não estiverem disponíveis, você deve fornecer um estilo de janela alternativo que não use o quadro de vidro ou janela padrão, definindo o estilo da janela como null.
Você pode estender seu conteúdo WPF no quadro de janela, especificando um ControlTemplate que define a aparência e comportamento do conteúdo do quadro. Você pode definir o TargetType do ControlTemplate para o tipo da janela que está personalizando.
<ControlTemplate TargetType="{x:Type local:MainWindow}">
Por padrão, as partes de elementos visuais que estão dentro da área não-cliente da janela não são interativas. Para habilitar elementos interativos na área não-cliente, anexar a propriedade WindowsChrome.IsHitTestVisibleInChrome anexado ao elemento e defini-la como true.
A marcação XAML a seguir mostra os principais elementos necessários para personalizar uma janela usando a classe 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>
O primeiro setter anexa o WindowChrome para a janela. Ele usa todos os valores padrão para as propriedades de WindowChrome, que faz com que a janela a aparência de uma janela padrão.
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
O modelo da janela deve especificar um apresentador conteúdo para exibir o conteúdo da janela especificada em seu aplicativo. Por padrão, o WindowChrome classe estende a área do cliente para cobrir a borda não-cliente. Para descobrir o quadro de vidro, você precisa especificar uma margem ao redor do ContentPresenter. Essa marcação especifica uma borda com um fundo branco ao redor do conteúdo apresentador para emular a aparência de uma janela padrão. Ela também especifica uma margem que será vinculada à propriedade WindowNonClientFrameThickness, que obtém a largura de sistema padrão para o quadro.
<Border Background="White"
Margin="{Binding Source={x:Static shell:SystemParameters2.Current}, Path=WindowNonClientFrameThickness}">
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
O ícone do aplicativo e o título não são exibidas pela classe WindowChrome; eles precisam ser adicionados para a borda como conteúdo personalizado. O XAML a seguir adiciona uma imagem e um textblock para exibir o ícone e o título. Os dois elementos são vinculados às propriedades correspondentes na janela. A largura da imagem é vinculada a largura de SmallIconSize, que obtém o tamanho padrão do sistema para o ícone. A propriedade IsHitTestVisibleInChrome anexado é definida na imagem para que ele possa receber 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"/>
Acesso thread-safe
Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.