Compartilhar via


Personalização da barra de título

O Windows fornece uma barra de título padrão para cada janela e permite personalizá-la para corresponder à personalidade do aplicativo. A barra de título padrão vem com alguns componentes padrão e funcionalidade principal, como arrastar e redimensionar a janela.

Um aplicativo do Windows mostrando a barra de título

Consulte o artigo de design da barra de título para obter diretrizes sobre como personalizar a barra de título do seu aplicativo, o conteúdo aceitável da área da barra de título e os padrões recomendados de interface do usuário.

Observação

Este artigo mostra como personalizar a barra de título para aplicativos que usam UWP e WinUI 2. Para aplicativos que usam o SDK do Aplicativo do Windows e o WinUI 3, consulte a personalização da barra de título para o SDK do Aplicativo do Windows.

Se você estiver considerando migrar seu aplicativo UWP para o SDK do Aplicativo do Windows, veja nosso guia de migração de funcionalidade de janela. Consulte de migração de funcionalidade de janelas para obter mais informações.

Componentes da barra de título

Esta lista descreve os componentes da barra de título padrão.

  • Retângulo da barra de título
  • Texto do título
  • Menu do sistema – acessado clicando no ícone do aplicativo ou clicando com o botão direito do mouse na barra de título
  • Controles de legenda
    • Botão Minimizar
    • Botão Maximizar/Restaurar
    • Botão Fechar

Em aplicativos UWP, você pode personalizar a barra de título usando membros das classes ApplicationView e CoreApplicationView . Há várias APIs para modificar progressivamente a aparência da barra de título com base no nível de personalização necessário.

Observação

A classe Windows.UI.WindowManagement.AppWindow , usada para janelas secundárias em aplicativos UWP, não dá suporte à personalização da barra de título. Para personalizar a barra de título de um aplicativo UWP que usa janelas secundárias, use ApplicationView conforme descrito em Mostrar várias exibições com ApplicationView.

Quanto personalizar a barra de título

Há dois níveis de personalização que você pode aplicar à barra de título: aplicar pequenas modificações à barra de título padrão ou estender a tela do aplicativo para a área da barra de título e fornecer conteúdo completamente personalizado.

Simples

Para personalização simples, como alterar a cor da barra de título, você pode definir propriedades no objeto da barra de título da janela do aplicativo para especificar as cores que deseja usar para elementos da barra de título. Nesse caso, o sistema mantém responsabilidade de todos os outros aspectos da barra de título, como o título do aplicativo de desenho e definindo áreas para arrastar.

Completo

Sua outra opção é ocultar a barra de título padrão e substituí-la por seu próprio conteúdo personalizado. Por exemplo, você pode colocar texto, uma caixa de pesquisa ou menus personalizados na área da barra de título. Você também precisará usar essa opção para estender um material pano de fundo, como Mica, para a área da barra de título.

Ao optar pela personalização completa, você é responsável por colocar conteúdo na área da barra de título e pode definir sua própria região de arrastar. Os controles de legenda (botões Fechar, Minimizar e Maximizar o sistema) ainda estão disponíveis e são manipulados pelo sistema, mas não são como elementos, como o título do aplicativo. Você mesmo precisará criar esses elementos, conforme necessário, para seu aplicativo.

Personalização simples

Se você quiser personalizar apenas as cores ou o ícone da barra de título, poderá definir propriedades no objeto da barra de título para a janela do aplicativo.

Título

Por padrão, a barra de título mostra o nome de exibição do aplicativo como o título da janela. O nome de exibição é definido no Package.appxmanifest arquivo.

Para adicionar texto personalizado ao título, defina a propriedade ApplicationView.Title como um valor de texto, conforme mostrado aqui.

public MainPage()
{
    this.InitializeComponent();

    ApplicationView.GetForCurrentView().Title = "Custom text";
}

O texto é anexado ao título da janela, que será exibido como "texto personalizado – nome de exibição do aplicativo". Para mostrar um título personalizado sem o nome de exibição do aplicativo, você precisa substituir a barra de título padrão, conforme mostrado na seção de personalização completa.

Cores

Este exemplo mostra como obter uma instância de ApplicationViewTitleBar e definir suas propriedades de cor.

Esse código pode ser colocado no método OnLaunched do do aplicativo (App.xaml.cs), após a chamada para Window.Activateou na primeira página do aplicativo.

// using Windows.UI;
// using Windows.UI.ViewManagement;

var titleBar = ApplicationView.GetForCurrentView().TitleBar;

// Set active window colors
titleBar.ForegroundColor = Colors.White;
titleBar.BackgroundColor = Colors.Green;
titleBar.ButtonForegroundColor = Colors.White;
titleBar.ButtonBackgroundColor = Colors.SeaGreen;
titleBar.ButtonHoverForegroundColor = Colors.White;
titleBar.ButtonHoverBackgroundColor = Colors.DarkSeaGreen;
titleBar.ButtonPressedForegroundColor = Colors.Gray;
titleBar.ButtonPressedBackgroundColor = Colors.LightGreen;

// Set inactive window colors
titleBar.InactiveForegroundColor = Colors.Gainsboro;
titleBar.InactiveBackgroundColor = Colors.SeaGreen;
titleBar.ButtonInactiveForegroundColor = Colors.Gainsboro;
titleBar.ButtonInactiveBackgroundColor = Colors.SeaGreen;

Há alguns aspectos a serem observados ao definir as cores da barra de título:

  • A cor de fundo do botão não é aplicada ao botão de fechar nos estados de foco hover e pressionado . O botão fechar sempre usa a cor definida pelo sistema para esses estados.
  • Definir a propriedade de cor como null a redefine para a cor padrão do sistema.
  • Não é possível definir cores transparentes. O canal alfa da cor é ignorado.

O Windows oferece ao usuário a opção de aplicar a cor de destaque selecionada à barra de título. Se você definir qualquer cor da barra de título, recomendamos que você defina explicitamente todas as cores. Isso garante que não haja combinações de cores não intencionais que ocorram devido às configurações de cores definidas pelo usuário.

Personalização completa

Quando você concorda com a personalização da barra de título completa, a área de cliente do seu aplicativo é estendida para cobrir toda a janela, incluindo a área da barra de título. Você é responsável pelo desenho e tratamento de entrada para toda a janela, exceto os botões de legenda, que ainda são fornecidos pela janela.

Para ocultar a barra de título padrão e estender o conteúdo para a área da barra de título, defina a propriedade ExtendViewIntoTitleBar como true. Você pode definir essa propriedade no método do OnLaunched aplicativo (App.xaml.cs) ou na primeira página do aplicativo.

Dica

Consulte a seção "Exemplo de Personalização Completa" para ver todo o código de uma vez.

Este exemplo mostra como obter o CoreApplicationViewTitleBar e configurar a propriedade ExtendViewIntoTitleBar para true.

using Windows.ApplicationModel.Core;

public MainPage()
{
    this.InitializeComponent();

    // Hide default title bar.
    var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
    coreTitleBar.ExtendViewIntoTitleBar = true;
}

Dica

Essa configuração persiste quando seu aplicativo é fechado e reiniciado. No Visual Studio, se você definir ExtendViewIntoTitleBar como true, e quiser reverter para o padrão, você deverá defini-lo false explicitamente e executar seu aplicativo para substituir a configuração persistente.

Conteúdo da barra de título e áreas de arrastar

Quando seu aplicativo é estendido para a área da barra de título, você é responsável por definir e gerenciar a interface do usuário para a barra de título. Isso normalmente inclui, no mínimo, especificar a região de arrasto e o texto do título. A região de arrastar da barra de título define onde o usuário pode clicar e arrastar para mover a janela. Também é onde o usuário pode clicar com o botão direito do mouse para mostrar o menu do sistema.

Para saber mais sobre o conteúdo aceitável da barra de título e os padrões de interface do usuário recomendados, consulte Design da barra de título.

Especifique a região de arrastar chamando o método Window.SetTitleBar e passando um UIElement que define a região de arrastar. (Normalmente, UIElement é um painel que contém outros elementos.) A propriedade ExtendViewIntoTitleBar deve ser definida para true para que a chamada SetTitleBar tenha qualquer efeito.

Veja como definir o Grid de conteúdo como a região arrastável da barra de título. Esse código é inserido no XAML e no code-behind para a primeira página do aplicativo.

<Grid x:Name="AppTitleBar" Background="Transparent">
    <!-- Width of the padding columns is set in LayoutMetricsChanged handler. -->
    <!-- Using padding columns instead of Margin ensures that the background
         paints the area under the caption control buttons (for transparent buttons). -->
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="LeftPaddingColumn" Width="0"/>
        <ColumnDefinition/>
        <ColumnDefinition x:Name="RightPaddingColumn" Width="0"/>
    </Grid.ColumnDefinitions>
    <Image Source="Assets/WindowIcon.png" 
           Grid.Column="1"
           HorizontalAlignment="Left"
           Width="16" Height="16"
           Margin="8,0,0,0"/>
    <TextBlock x:Name="AppTitleTextBlock"
               Text="App title" 
               Style="{StaticResource CaptionTextBlockStyle}" 
               Grid.Column="1"
               VerticalAlignment="Center"
               Margin="28,0,0,0"/>
</Grid>
public MainPage()
{
    this.InitializeComponent();

    var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
    coreTitleBar.ExtendViewIntoTitleBar = true;

    // Set XAML element as a drag region.
    Window.Current.SetTitleBar(AppTitleBar);
}

Por padrão, a barra de título do sistema mostra o nome de exibição do aplicativo como o título da janela. O nome de exibição é definido no arquivo Package.appxmanifest. Você pode obter esse valor e usá-lo em sua barra de título personalizada como esta.

AppTitleTextBlock.Text = AppInfo.Current.DisplayInfo.DisplayName;

Importante

A região de arrastar especificada precisa ser testável por clique. Por padrão, alguns elementos de interface do usuário, como Grid, não participam do teste de clique quando não têm um conjunto de planos de fundo. Isso significa que, para alguns elementos, talvez seja necessário definir um pincel de plano de fundo transparente. Consulte as observações em VisualTreeHelper.FindElementsInHostCoordinates para obter mais informações.

Por exemplo, se você definir um grid como sua região de arrastar, configure Background="Transparent" para torná-lo arrastável.

Essa Grade não é arrastável (mas os elementos visíveis dentro dela são): <Grid x:Name="AppTitleBar">.

Esta Grade tem a mesma aparência, mas toda a Grade é arrastável: <Grid x:Name="AppTitleBar" Background="Transparent">.

Conteúdo interativo

Você pode colocar controles interativos, como botões, menus ou uma caixa de pesquisa, na parte superior do aplicativo para que eles pareçam estar na barra de título. No entanto, há algumas regras que você deve seguir para garantir que seus elementos interativos recebam a entrada do usuário enquanto ainda permitem que os usuários movam sua janela.

Um aplicativo do Windows com uma caixa de pesquisa na barra de título

  • Você deve chamar SetTitleBar para definir uma área como a região da barra de título arrastável. Se você não fizer isso, o sistema definirá a região de arrastar padrão na parte superior da página. Em seguida, o sistema manipulará toda a entrada do usuário nessa área e impedirá que a entrada alcance seus controles.
  • Coloque seus controles interativos sobre a parte superior da região de arrastar definida pela chamada para SetTitleBar (com uma ordem z mais alta). Não faça com que seus controles interativos sejam filhos do UIElement passado para SetTitleBar. Depois de passar um elemento para SetTitleBar, o sistema trata o elemento como a barra de título do sistema e manipula toda a entrada de ponteiro para esse elemento.

Aqui, o elemento AutoSuggestBox tem uma ordem z maior do que AppTitleBar, portanto, ele recebe a entrada do usuário.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="48"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid x:Name="AppTitleBar" Background="Transparent">
        <!-- Width of the padding columns is set in LayoutMetricsChanged handler. -->
        <!-- Using padding columns instead of Margin ensures that the background
             paints the area under the caption control buttons (for transparent buttons). -->
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="LeftPaddingColumn" Width="0"/>
            <ColumnDefinition/>
            <ColumnDefinition x:Name="RightPaddingColumn" Width="0"/>
        </Grid.ColumnDefinitions>
        <Image Source="Assets/WindowIcon.png" 
               Grid.Column="1"
               HorizontalAlignment="Left"
               Width="16" Height="16"
               Margin="8,0,0,0"/>
        <TextBlock x:Name="AppTitleTextBlock"
                   Text="App title" 
                   Style="{StaticResource CaptionTextBlockStyle}" 
                   Grid.Column="1"
                   VerticalAlignment="Center"
                   Margin="28,0,0,0"/>
    </Grid>

    <!-- This control has a higher z-order than AppTitleBar, 
         so it receives user input. -->
    <AutoSuggestBox QueryIcon="Find"
                    PlaceholderText="Search"
                    HorizontalAlignment="Center"
                    Width="260" Height="32"/>
</Grid>

Botões de legenda do sistema

O sistema reserva o canto superior esquerdo ou superior direito da janela do aplicativo para os botões de legenda do sistema (minimizar, maximizar/restaurar, fechar). O sistema mantém o controle da área do botão de legenda para garantir que a funcionalidade mínima seja fornecida para arrastar, minimizar, maximizar e fechar a janela. O sistema desenha o botão Fechar no canto superior direito para idiomas que são lidos da esquerda para a direita e no canto superior esquerdo para idiomas que são lidos da direita para a esquerda.

Você pode exibir conteúdo abaixo da área de controle da legenda, como o plano de fundo do seu aplicativo, mas não deve incluir nenhum elemento interativo da interface de usuário com o qual espera que o usuário possa interagir. Ele não recebe nenhuma entrada porque a entrada para os controles de legenda é tratada pelo sistema.

Essas linhas do exemplo anterior mostram as colunas de preenchimento no XAML que define a barra de título. O uso de colunas de preenchimento em vez de margens garante que o plano de fundo pinte a área sob os botões de controle de legenda (para botões transparentes). Utilizar colunas de preenchimento à direita e à esquerda garante que sua barra de título se comporte corretamente em layouts de esquerda para direita e de direita para esquerda.

<Grid.ColumnDefinitions>
    <ColumnDefinition x:Name="LeftPaddingColumn" Width="0"/>
    <ColumnDefinition/>
    <ColumnDefinition x:Name="RightPaddingColumn" Width="0"/>
</Grid.ColumnDefinitions>

As dimensões e a posição da área de controle de legendas são comunicadas pela classe CoreApplicationViewTitleBar para que você possa contabilizar isso no layout da interface do usuário da barra de título. A largura da região reservada em cada lado é fornecida pelas propriedades SystemOverlayLeftInset ou SystemOverlayRightInset, e sua altura é fornecida pela propriedade Height.

Você pode lidar com o evento LayoutMetricsChanged para responder a alterações no tamanho dos botões de legenda. Por exemplo, isso pode acontecer se o layout do aplicativo mudar da esquerda para a direita para a direita para a esquerda. Manipule esse evento para verificar e atualizar o posicionamento de elementos da interface do usuário que dependem do tamanho da barra de título.

Este exemplo mostra como ajustar o layout da barra de título para considerar as alterações nas métricas da barra de título. AppTitleBar, LeftPaddingColumne RightPaddingColumn são declarados no XAML mostrado anteriormente.

private void CoreTitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)
{
    // Get the size of the caption controls and set padding.
    LeftPaddingColumn.Width = new GridLength(coreTitleBar.SystemOverlayLeftInset);
    RightPaddingColumn.Width = new GridLength(coreTitleBar.SystemOverlayRightInset);
}

Cor e transparência nos botões de legenda

Ao estender o conteúdo do aplicativo para a área da barra de título, você pode tornar a tela de fundo dos botões de legenda transparente para permitir que a tela de fundo do aplicativo seja exibida. Você normalmente define o plano de fundo como Colors.Transparent para transparência total. Para transparência parcial, defina o canal alfa para a Cor para a qual você definiu a cor.

Essas propriedades da barra de título podem ser transparentes:

Todas as outras propriedades de cor continuarão a ignorar o canal alfa. Se ExtendViewIntoTitleBar estiver definido como false, o canal alfa será sempre ignorado para todas as propriedades de cor ApplicationViewTitleBar.

A cor de fundo do botão não é aplicada ao botão Fechar nos estados ao passar o mouse e ao ser pressionado. O botão fechar sempre usa a cor definida pelo sistema para esses estados.

Dica

Mica é um material delicioso que ajuda a distinguir a janela que está em foco. Recomendamos isso como o plano de fundo para janelas de longa duração em Windows 11. Se você aplicou o Mica na área do cliente da sua janela, poderá estendê-lo para a área da barra de título e tornar os botões de legenda transparentes para que o Mica apareça. Consulte o material de Mica para obter mais informações.

Diminua a barra de título quando a janela estiver inativa

Você deve deixar claro quando a janela está ativa ou inativa. No mínimo, você deve alterar a cor dos botões na barra de título, ícones e texto.

Manipule o evento CoreWindow.Activated para determinar o estado de ativação da janela e atualize a interface do usuário da barra de título conforme necessário.

public MainPage()
{
    ...
    Window.Current.CoreWindow.Activated += CoreWindow_Activated;
}

private void CoreWindow_Activated(CoreWindow sender, WindowActivatedEventArgs args)
{
    UISettings settings = new UISettings();
    if (args.WindowActivationState == CoreWindowActivationState.Deactivated)
    {
        AppTitleTextBlock.Foreground = 
            new SolidColorBrush(settings.UIElementColor(UIElementType.GrayText));
    }
    else
    {
        AppTitleTextBlock.Foreground = 
            new SolidColorBrush(settings.UIElementColor(UIElementType.WindowText));
    }
}

Redefinir a barra de título

Você pode chamar SetTitleBar para alternar para um novo elemento de barra de título enquanto seu aplicativo estiver em execução. Você também pode passar null como o parâmetro para SetTitleBar e definir ExtendViewIntoTitleBar como false para reverter para a barra de título padrão do sistema.

Mostrar e ocultar a barra de título

Se você adicionar suporte para de tela inteira ou de sobreposição compacta ao seu aplicativo, pode ser necessário fazer alterações na barra de títulos quando o aplicativo alternar entre esses modos.

Quando seu aplicativo é executado em modo de tela inteira ou tablet (somente Windows 10), o sistema oculta os botões de controle de legenda e barra de título. No entanto, o usuário pode invocar a barra de título para que ela seja mostrada como uma sobreposição sobre a interface do usuário do aplicativo.

Você pode manipular o evento CoreApplicationViewTitleBar.IsVisibleChanged para ser notificado quando a barra de título estiver oculta ou ativada, e assim mostrar ou ocultar o conteúdo da sua barra de título personalizada conforme necessário.

Este exemplo mostra como identificar o evento IsVisibleChanged para mostrar e ocultar o elemento AppTitleBar de exemplos anteriores.

public MainPage()
{
    this.InitializeComponent();

    var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;

    // Register a handler for when the title bar visibility changes.
    // For example, when the title bar is invoked in full screen mode.
    coreTitleBar.IsVisibleChanged += CoreTitleBar_IsVisibleChanged;
}

private void CoreTitleBar_IsVisibleChanged(CoreApplicationViewTitleBar sender, object args)
{
    if (sender.IsVisible)
    {
        AppTitleBar.Visibility = Visibility.Visible;
    }
    else
    {
        AppTitleBar.Visibility = Visibility.Collapsed;
    }
}

Observação

O modo de tela cheia só pode ser ativado se houver suporte no seu aplicativo. Consulte ApplicationView.IsFullScreenMode para obter mais informações. O modo tablet (somente Windows 10) é uma opção de usuário no Windows 10 no hardware com suporte, portanto, um usuário pode optar por executar qualquer aplicativo no modo tablet.

O que fazer e o que não fazer

  • Deixe claro quando a janela está ativa ou inativa. No mínimo, altere a cor do texto, dos ícones e dos botões na barra de título.
  • Defina uma região de arrastar ao longo da borda superior da tela do aplicativo. Combinar o posicionamento das barras de título do sistema facilita a localização pelos usuários.
  • Defina uma região de arrastar que corresponde a barra de título visual (se houver) na tela do aplicativo.

Exemplo de personalização completa

Este exemplo mostra todo o código descrito na seção Personalização completa.

<Page
    x:Class="WinUI2_ExtendedTitleBar.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:WinUI2_ExtendedTitleBar"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
    muxc:BackdropMaterial.ApplyToRootOrPageBackground="True">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="48"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid x:Name="AppTitleBar" Background="Transparent">
            <!-- Width of the padding columns is set in LayoutMetricsChanged handler. -->
            <!-- Using padding columns instead of Margin ensures that the background
                 paints the area under the caption control buttons (for transparent buttons). -->
            <Grid.ColumnDefinitions>
                <ColumnDefinition x:Name="LeftPaddingColumn" Width="0"/>
                <ColumnDefinition/>
                <ColumnDefinition x:Name="RightPaddingColumn" Width="0"/>
            </Grid.ColumnDefinitions>
            <Image Source="Assets/WindowIcon.png" 
                   Grid.Column="1"
                   HorizontalAlignment="Left"
                   Width="16" Height="16"
                   Margin="8,0,0,0"/>
            <TextBlock x:Name="AppTitleTextBlock"
                       Text="App title" 
                       Style="{StaticResource CaptionTextBlockStyle}" 
                       Grid.Column="1"
                       VerticalAlignment="Center"
                       Margin="28,0,0,0"/>
        </Grid>

        <!-- This control has a higher z-order than AppTitleBar, 
             so it receives user input. -->
        <AutoSuggestBox QueryIcon="Find"
                        PlaceholderText="Search"
                        HorizontalAlignment="Center"
                        Width="260" Height="32"/>

        <muxc:NavigationView Grid.Row="1"
                             IsBackButtonVisible="Collapsed"
                             IsSettingsVisible="False">
            <StackPanel>
                <TextBlock Text="Content" 
                           Style="{ThemeResource TitleTextBlockStyle}"
                           Margin="12,0,0,0"/>
            </StackPanel>
        </muxc:NavigationView>
    </Grid>
</Page>
public MainPage()
{
    this.InitializeComponent();

    // Hide default title bar.
    CoreApplicationViewTitleBar coreTitleBar = 
        CoreApplication.GetCurrentView().TitleBar;
    coreTitleBar.ExtendViewIntoTitleBar = true;

    // Set caption buttons background to transparent.
    ApplicationViewTitleBar titleBar = 
        ApplicationView.GetForCurrentView().TitleBar;
    titleBar.ButtonBackgroundColor = Colors.Transparent;

    // Set XAML element as a drag region.
    Window.Current.SetTitleBar(AppTitleBar);

    // Register a handler for when the size of the overlaid caption control changes.
    coreTitleBar.LayoutMetricsChanged += CoreTitleBar_LayoutMetricsChanged;

    // Register a handler for when the title bar visibility changes.
    // For example, when the title bar is invoked in full screen mode.
    coreTitleBar.IsVisibleChanged += CoreTitleBar_IsVisibleChanged;

    // Register a handler for when the window activation changes.
    Window.Current.CoreWindow.Activated += CoreWindow_Activated;
}

private void CoreTitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)
{
    // Get the size of the caption controls and set padding.
    LeftPaddingColumn.Width = new GridLength(coreTitleBar.SystemOverlayLeftInset);
    RightPaddingColumn.Width = new GridLength(coreTitleBar.SystemOverlayRightInset);
}

private void CoreTitleBar_IsVisibleChanged(CoreApplicationViewTitleBar sender, object args)
{
    if (sender.IsVisible)
    {
        AppTitleBar.Visibility = Visibility.Visible;
    }
    else
    {
        AppTitleBar.Visibility = Visibility.Collapsed;
    }
}

 private void CoreWindow_Activated(CoreWindow sender, WindowActivatedEventArgs args)
 {
     UISettings settings = new UISettings();
     if (args.WindowActivationState == CoreWindowActivationState.Deactivated)
     {
         AppTitleTextBlock.Foreground = 
            new SolidColorBrush(settings.UIElementColor(UIElementType.GrayText));
     }
     else
     {
         AppTitleTextBlock.Foreground = 
            new SolidColorBrush(settings.UIElementColor(UIElementType.WindowText));
     }
 }