none
Como setar o theme dark na aplicação? RRS feed

  • Pergunta

  • Pessoal,
    sei que o usuário pode mudar o thema do celular dele, e isso influência em meus controles da aplicação.

    Gostaria de saber se tem como eu por exemplo na minha aplicação setar que sempre funcione com o theme dark, ao invés de ficar mudando a cor de cada controle.

     
    domingo, 30 de outubro de 2011 14:12

Respostas

  • Fala Paulo,

    Entendi. Isso é bem fácil de fazer utilizando implicit styles, nova feature do Mango (silverlight 4).

    Vai no seu App.xaml e crie estilos usando somente TargetType. Desta forma eles serão aplicados a todos os controles daquele tipo.

    Por exemplo, se quer que todos os seus TextBlocks sejam verdes, basta fazer o seguinte:

            <Style TargetType="TextBlock">
                <Setter Property="Foreground" Value="Green" />
            </Style>

    Você pode daí setar manualmente a cor nos que você quer que não sejam verdes (neste exemplo).

    E pronto :)

    []'s!

    André

     


    - André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com
    segunda-feira, 31 de outubro de 2011 11:42
    Moderador

Todas as Respostas

  • Olá Paulo,

    O pessoal da MS já disponibilizou Resources específicos para lidar com dark e light themes.

    Tudo que você tem que fazer é usá-los sempre, garantindo assim a portabilidade de sua aplicação para os 2.

    Por exemplo, ao invés de setar a cor de um textblock para "Black", utilize o PhoneForegroundBrush. Faça a mesma coisa quando setar o fundo de um controle, utilizando PhoneBackgroundBrush.

    Exemplo:

    <Grid Background="{StaticResource PhoneBackgroundBrush}">
                <TextBlock Text="Hello" Foreground="{StaticResource PhoneForegroundBrush}"/>
    </Grid>

    Isso vai fazer com que o texto fique branco para um darktheme e preto para um light theme, sendo legível em amos, sem que você tenha que se preocupar com isso.

    Aqui vai um link com todos os resources deste tipo disponíveis: http://msdn.microsoft.com/en-us/library/ff769552(v=vs.92).aspx

    Se você realmente não quer suportar um thema e não quer que nada nunca mude de cor, simplesmente especifique a cor que quer nas propriedades foreground e background de todos os controles da sua app. Você pode criar styles pra facilitar.

    Preste atenção no próprio PhoneApplicationPage. Por padrão, o vs2010 já coloca Foreground="{StaticResource PhoneForegroundBrush}" lá em cima junto com os namespaces.

    Espero ter ajudado,

    []'s

    André Carlucci

     


    - André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com
    domingo, 30 de outubro de 2011 14:46
    Moderador
  • O que eu quero de fato é que minha aplicação fique somente dark, independente do theme que o usuário selecionou.

    Setar a propriedade do objeto de cada controle na mão é muito trabalhoso, o ideal era eu setar em algum lugar da aplicação qual vai ser o theme default que eu quero. Assim, eu não precisaria setar nada na mão.

    Será que é possível fazer isso? 
    domingo, 30 de outubro de 2011 14:53
  • Paulo,

    Acredito que o theme você não conseguirá definir, mas pode definir o background de seu LayoutRoot para preto.

    	<!--LayoutRoot is the root grid where all page content is placed-->
    	<Grid x:Name="LayoutRoot" Background="Black">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>

    []'s


    Thiago J. Mônaco
    MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
    Scrum Developer I and Professional Scrum Master
    http://www.windowsphonebrasil.net
    @thiagojmonaco
    segunda-feira, 31 de outubro de 2011 10:40
    Moderador
  • Fala Paulo,

    Entendi. Isso é bem fácil de fazer utilizando implicit styles, nova feature do Mango (silverlight 4).

    Vai no seu App.xaml e crie estilos usando somente TargetType. Desta forma eles serão aplicados a todos os controles daquele tipo.

    Por exemplo, se quer que todos os seus TextBlocks sejam verdes, basta fazer o seguinte:

            <Style TargetType="TextBlock">
                <Setter Property="Foreground" Value="Green" />
            </Style>

    Você pode daí setar manualmente a cor nos que você quer que não sejam verdes (neste exemplo).

    E pronto :)

    []'s!

    André

     


    - André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com
    segunda-feira, 31 de outubro de 2011 11:42
    Moderador