Usuário com melhor resposta
Como setar o theme dark na aplicação?

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- Sugerido como Resposta Cleyton Ferrari segunda-feira, 31 de outubro de 2011 14:07
- Marcado como Resposta Paulo Rogério Martins Marques terça-feira, 1 de novembro de 2011 15:50
segunda-feira, 31 de outubro de 2011 11:42
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.comdomingo, 30 de outubro de 2011 14:46 -
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 -
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- Sugerido como Resposta Cleyton Ferrari segunda-feira, 31 de outubro de 2011 14:07
- Marcado como Resposta Paulo Rogério Martins Marques terça-feira, 1 de novembro de 2011 15:50
segunda-feira, 31 de outubro de 2011 11:42