.NET Tips And Tricks
Artigos com o marcador Silverlight
Livro gratis sobre Windows Phone 7
05/09/10
E ai pessoal, tudo bem?
Bom a notícia não é tão nova, mas fica aqui a dica para quem ainda não viu
.
Foi disponibilizado para download o preview do livro Programming Windows Phone 7 Series, não é o livro todo, é só um preview, mas é uma ótima fonte para iniciar os estudos. Clique na imagem abaixo para fazer o download.
Abraços.
Partículas–Windows Phone 7
31/08/10
E ai pessoal tudo bem?
As últimas semanas foram de muito trabalho, por isso o blog ficou um pouco parado. Mas a partir de hoje, volto com força total aqui no blog, e tenho ótimas novidades para o pessoal que gosta de Silverlight.
A primeira é que estou montando uma comunidade com meu amigo Dorta, específica sobre Silverlight, com lista de discussão, artigos, webcasts e muito mais. Estamos acertando os últimos detalhes, mas em breve todos poderão participar da nova comunidade.
A novidade é uma idéia que pode dar muito certo, mas só para deixar todo mundo curioso, pode ser que saia um livro de Silverlight logo logo, novamente eu e o Dorta estamos montando isso.
Agora, para não passar em branco o post, todo mundo sabe que o lançamento do Windows Phone 7 está próximo. Muitas apliações e jogos estão em desenvolvimento, e é muito divertido “brincar” desenvolvendo para o Windows Phone 7, fiquem com um vídeo de um sistema de particulas que estou criando, quando ficar pronto, ou avançar mais o mesmo, postarei aqui como criar algo assim. Esse vídeo está com 200 partículas, iria mostrar rodando com 1000, mas no emulador não ficou muito legal. Aceito doações de protótipos de aparelhos com o Windows Phone 7
.
Abraços.
Partículas Windows Phone 7 from Márcio Fábio Althmann on Vimeo.
Moderador do Fórum de Silverlight
18/08/10
E ai pessoal blz?
A falta de posts no blog é puramente falta de tempo, muito trabahlo, mas muito mesmo, mas em breve vou recuperar o tempo perdido e postar muitas coisas.
Esse post é só para anunciar que agora também sou moderador do Fórum de Silverlight no MSDN Brasil, vou moderar o Forum junto com meu amigo Ricardo Dorta, e em breve nós dois teremos uma ótima novidade para a comunidade de Silverlight Brasileira, fiquem ligados, o projeto está evoluindo e o resultado vai ser ótimo.
Então fiquem a vontade para tirar dúvidas lá no fórum ou mesmo mandando e-mail aqui pelo site.
Abraços.
Ribbon para Silverlight
14/08/10
Depois que mostrei o Ribbon para WPF aqui, recebi muitos e-mails perguntando se teria algo parecido para Silverlight, confesso opção gratuita eu nunca encontrei, mas resolvi procurar hoje e vi um controle em estágio Beta ainda que vale muito dar uma olhada, é da empresa DevElements, e o controle pode ser visto aqui.
Agora caso queiram comprar algo, tenho algumas dicas como os controles da Telerik, Infragistics, ComponentArt ou ComponentOne.
Abraços.
Zoom.it
06/08/10
A Microsoft lançou um site chamado Zoom.it nele conseguimos criar um “Screen shot” gigante de um site, e tudo com Silverlight e Deepzoom.
Vou deixar para explicar o Deep Zoom, fica para outro dia, mas o resultado é muito legal, e ainda conseguimos adicionar o Deep Zoom em sites, como fiz abaixo com meu site, e ele também cria uma url curta. Olha o meu site aqui http://zoom.it/hQBR.










Abraços.
Melhorando WinApps seguindo WebApps
01/08/10
Nossa Márcio que título maluco!!
Pois é, foi o melhor que encontrei
mas logo o título fará sentido. Felizmente, sempre trabalhei com Web e Windows, apesar de não ter tanto talento como designer, adoro estudar padrões para UI, o que é certo, errado, o que fazer e o que não fazer.
É claro que não vou falar que todos os sites ou todas aplicações web seguem o que vou mostrar, mas felizmente a maioria das “bem feitas” seguem isso. Vou esquecer sites normais, e vou focar em aplicações web, só para facilitar.
O item que estou falando é tão simples e básico, que todo mundo deveria seguir, que é alinhar corretamente os itens de um formulário, é tão comum quando vamos desenvolver um layout de site, utilizar grids para definir o espaçamento entre os itens, assim temos um layout organizado e agradável.
Quem liga para isso Márcio? Ahhh ninguém, é só mais uma prática boba que o pessoal segue. Todo mundo liga, e liga muito. Mesmo que mesmo sem perceber, um formulário bem organizado ajuda qualquer usuário a encontrar o que ele quer.
Quem nunca viu algum profissional falar algo do tipo, “meu cliente não acha nada, meu cliente não procura nada direito”, é tão fácil culpar o cliente, afinal “eu” fiz tal coisa, então essa coisa está “perfeita”.
Mas eu acho que isso é meio cultural, já cansei de passar estudos de como criar um layout agradável para formulários para programadores, o que eles fazem? Apertam delete no e-mail, afinal isso é trabalho do “designer”, eu acho isso um absurdo, não estou pedindo para algum programador de WinApps aprender como combinar cores, como utilizar o Photoshop, nada disso, mas só para prestar atenção em como organizar um formulário.
Chega de falar, e vamos ver dois exemplos, com Windows Forms mesmo, que é o que a maioria do pessoal utiliza
.
Padrão macarronada, nem sei se alguém já deu esse nome, mas falei ontem em um curso e gostei
.
Ok, a tela feita, funciona, mas eu acho horrível olhar telas dessa forma, podemos facilmente organizar da seguinte forma.
Olhando a imagem acima, sei onde tudo começa e acaba, tenho padrão de espaçamento entre os campos do formulário, joguei o Label acima dos campos só para facilitar a visualização, e prefiro assim, mas com o Label a esquerda funciona da mesma forma.
Quando eu trabalhava com o Heitor Althmann, é família de geek =D, ele é designer, nós criamos alguns padrões para formulários, na época definidos por CSS automaticamente, mas ainda utilizo o padrão com sucesso em aplicações para Windows. Segue abaixo a lista de possibilidades com o padrão.
Espero que gostem, e que utilizem o padrão, e que UI seja uma preocupação também de quem desenvolve aplicações para Windows, afinal, aquela tela com 100 campos, totalmente desorganizados, deixa qualquer usuário confuso.
Abraços.
Biblioteca de IO para Silverlight 4 e COM+
11/07/10
Um dos novos recursos do Silverlight 4, quando temos aplicações rodando for a do Browser é utilizar componentes COM+.
Pode parecer estranho falar de COM+, imaginem uma aplicação instalada no computador do usuário, não temos acesso direto aos arquivos do PC por exemplo, é ai que entra o COM+, vamos trabalhar com componentes que farão esse serviço. E acessar arquivos é só um dos exemplos
.
Lembrando que, a aplicação deverá rodar com nível de privilégio elevado, por questões óbvias de segurança
.
Não é difícil trabalhar com esses componentes COM+, mas temos que conhecer os nomes dos métodos e propriedades que cada componente possui, e como estaremos trabalhando com dynamic, o Intellisense não vai ajudar.
Foi pensando nisso que resolvi hospedar no CodePlex meus projetos e estudos, e resolvi criar uma biblioteca de IO para trabalhar com o FileSystemObject do COM+, e ficar mais transparente para o programador trabalhar com arquivos e diretórios.
Estou implementando primeiramente as classes File e Directory, e trabalhar com essas classes será da mesma forma das respectivas classes do namespace System.IO. Por isso vou manter os nomes em inglês tanto para classes e métodos.
Agora vamos ver como utilizamos COM+ em uma aplicação OOB (Out Of Browser) feita com Silverlight 4.
Primeiro passo é definir nas propriedades do projeto que a aplicação pode rodar fora do browser, e nas configurações falar que a aplicação roda sobre privilégios elevados.
O próximo passo é adicionar referência a Microsoft.CSharp.dll, encontrará essa .dll no diretório de SDK´s, veja abaixo o diretório do meu computador C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\Client\Microsoft.CSharp.dll
Abaixo um exemplo de código utilizando COM+ verifico se um determinado arquivo existe ou não, e informo ao usuário.
using (dynamic fileSystemObject = AutomationFactory.CreateObject("Scripting.FileSystemObject"))
{
if (fileSystemObject.FileExists(path))
MessageBox.Show("Arquivo existe");
else
MessageBox.Show("Arquivo não existe");
}
Como disse anteriormente não é um código complexo, mas temos que saber o nome do método que é FileExists, temos que utilizar a classe AutomationFactory do namespace System.Runtime.InteropServices que cria uma objeto pelo nome do mesmo, no caso para trabalhar com arquivos e diretórios é “Scripting.FileSystemObject”.
Utilizando a biblioteca que eu estou criando o código fica.
if (File.Exists("d:\\Arquivo.txt"))
MessageBox.Show("Arquivo existe");
else
MessageBox.Show("Arquivo não existe");
Toda a comunicação com COM+ está encapsulada, não é necessário o conhecimento de qual método chamar, qual classe instanciar.
Até o momento implementei alguns métodos somente, principalmente pelo motivo que já falei aqui no blog que meu braço está machucado, mas o projeto é aberto, está hospedado no CodePlex, quem quiser contribuir, dar dicas, sugestões, criticas por favor fique a vontade, qualquer ajuda é bem vinda!!! ![]()
Clique aqui para acessar o projeto no CodePlex, e quem quiser contribuir entre em contato que cadastro como contribuidor.
Espero que gostem do projeto.
Abraços.
XAML – Canvas
08/06/10
Dando continuidade aos artigos sobre os painéis de layout do XAML, alias não vou mais dar o nome WPF/Silverlight para o que funcionar em ambas as tecnologias, vou falar diretamente XAML. Alias me perguntaram esses dias o significado de XAML, para quem não sabe é eXtensible Application Markup Language.
Bom no primeiro artigo sobre painéis de layout eu falei sobre o StackPanel, hoje vou mostra o controle Canvas.
Criar layouts com o Canvas lembra muito o jeito WindowsForms clássico, onde arrastavamos controles, e eles eram posicionados por coordenadas.
No Canvas acontece o mesmo, informamos valores da margem esquerda e superior, então caso queira criar um Button a 50 pixels da margem esquerda e 50 da margem superior o código é.
<Canvas x:Name="LayoutRoot" Background="White">
<Button Canvas.Left="50" Canvas.Top="50" Content="Botão 01" Height="23" Name="button1" Width="75" />
</Canvas>
Reparem que definimos a posição referente a margem esquerda do Canvas pela propriedade Canvas.Left do Button, o mesmo para a posição referente a margem superior do Canvas pela propriedade Canvas.Top.
Uma outra propriedade que temos acesso no Button é Canvas.ZIndex onde podemos definir qual elemento vai aparecer sobre outro, então no exemplo eu vou colocar mais um Button na posição Canvas.Top=”55” e Canvas.Left=”55”.
<Canvas x:Name="LayoutRoot" Background="White">
<Button Canvas.Left="50" Canvas.Top="50" Content="Botão 01" Height="23" Name="button1" Width="75" />
<Button Canvas.Left="55" Canvas.Top="55" Content="Botão 02" Height="23" Name="button2" Width="75" />
</Canvas>
Tudo bem, ninguém coloca um botão sobre outro, mas como é só para exemplo vamos lá =). Agora eu quero modificar a ordem, quero que o Botão 01 fique sobre o Botão 02. Para isso definimos a propriedade Canvas.ZIndex de cada um dos Buttons. Informamos um valor numérico, o valor mais alto fica sobre o valor mais baixo, simples assim.
Segue o código.
<Canvas x:Name="LayoutRoot" Background="White">
<Button Canvas.Left="50" Canvas.Top="50" Canvas.ZIndex="1" Content="Botão 01" Height="23" Name="button1" Width="75" />
<Button Canvas.Left="55" Canvas.Top="55" Canvas.ZIndex="0" Content="Botão 02" Height="23" Name="button2" Width="75" />
</Canvas>
Resultado, agora o Botão 01 está sobre o Botão 02.
O Canvas é simples mas pouco flexível, mas muito útil para quem quer desenvolver jogos, algumas animações onde vamos trabalhar diretamente com objetos posicionados, fica muito mais fácil.
Abraços e até o próximo artigo sobre o Grid.
Button com texto na vertical no XAML
15/05/10
Continuando os posts sobre XAML e o último post sobre o StackPanel nos comentários o Alan Cossari perguntou se não teria como colocar o texto dentro do botão na vertical, já que os botões estão em um StackPanel com orientação Horizontal para relembrar como era na imagem abaixo e também o resultado final.
E o código para rotacionar o conteúdo do botão.
<Button>
<Button.Content>
<TextBlock RenderTransformOrigin="0.5,0.5">
<TextBlock.RenderTransform>
<TransformGroup>
<RotateTransform Angle="90"/>
</TransformGroup>
</TextBlock.RenderTransform>Botão 06</TextBlock>
</Button.Content>
</Button>
Esse foi um post simples e rápido, a explicação de cada cada item fica para os próximos artigos, mas fica claro que temos uma flexibilidade para criar ou alterar elementos do nosso layout.
Abraços.
WPF/Silverlight – StackPanel
11/05/10
Dando continuidade a série de posts para quem está começando com com WPF ou Silverlight, vou falar primeiramente sobre os paineis disponíveis para criação do layout dos aplicativos.
Eu considero o StackPanel o mais simples dos painéis, com ele conseguimos colocar os controles ordenados horizontal ou verticalmente.
Para criar os quatro botões da primeira imagem o código utilizado foi.
<StackPanel>
<Button Content="Botão 01" />
<Button Content="Botão 02" />
<Button Content="Botão 03" />
<Button Content="Botão 04" />
</StackPanel>
É possível definir a orientação dos elementos filhos do StackPanel através da propriedade Orientation, se a propriedade não for informada, por padrão a orientação dos elementos filhos é vertical.
O código abaixo é da segunda imagem, com os elementos filhos dispostos horizontalmente, um ao lado do outro, reparem que nesse exemplo coloquei a propriedade Orientation com o valor Horizontal.
<StackPanel Orientation="Horizontal">
<Button Content="Botão 01" />
<Button Content="Botão 02" />
<Button Content="Botão 03" />
<Button Content="Botão 04" />
</StackPanel>
Vale lembra que conseguimos adicionar StackPanel como elemento filho de outro StackPanel como por exemplo na imagem e código abaixo.
<StackPanel>
<Button Content="Botão 01" />
<Button Content="Botão 02" />
<Button Content="Botão 03" />
<Button Content="Botão 04" />
<StackPanel Orientation="Horizontal">
<Button Content="Botão 05" />
<Button Content="Botão 06" />
<Button Content="Botão 07" />
<Button Content="Botão 08" />
<Button Content="Botão 09" />
<Button Content="Botão 10" />
</StackPanel>
</StackPanel>
Por hoje é só, a utlização do StackPanel é simples, no próximo artigo vou mostrar opções de alinhamento e margens utilizando ainda o StackPanel.
Abraços.





















