Criando meu controle – Parte 1

11 06 2010

Vou mostrar como criar um controle complexo, mas vai ser aos poucos assim fica mais fácil de se entender.  Esse controle vai ser um botão e a medida que eu for desenvolvendo vou implementando e deixando-o completo, mas a principio vou apenas herdar o meu botão de Button.

using System.Windows.Controls;

namespace Lib.Controls
{
    public class MyButton : Button
    {
        public MyButton()
        {
        }
    }
}

Por enquanto e só isso. Temos um botão que pode ser alterado e usado de muitas formas.

Algumas observações, a classe Button herda de ButtonBase que herda de ContentControl então para o próximo post vou alterar a herança do meu botão para ContentControl pra vermos como fica e o que precisaremos incrementar pra que continue com as mesmas características do Button original do Framework.

Para deixar mais claro, a idéia e ir regredindo na heranca do Button e ir implementando pra entendermos o que foi preciso fazer pra que termos o Button que esta no Framework do Silverlight.

Aqui esta o código para download e  ate a próxima.





Como Adicionar um ícone para meu controle Silverlight personalizado

8 06 2010

Para quem já montou seu controle personalizado e gostaria de adicionar um ícone para ser exibido no Blend e no Visual Studio em tempo de design, este post mostra de uma maneira simples como fazer.

Download do Codigo Fonte

Criei um projeto Silverlight Application chamado CustomControl e consecutivamente um Web chamado CustomControl.Web e uma Class Library chamada Lib.

Dentro da Lib adicionei uma pasta chamada Controls e dentro dela uma class chamada MyControl.cs e nela fiz uma implementação de Button.

public class MyControl : Button
{
    public MyControl()
        : base()
    {

    }
}

Agora vou criar uma imagem no Paint e salva-la como MyControl.Ico.png

Depois adiciono a imagem dentro da pasta controls

E na propriedades BuildAction da imagem seleciono Embedded Resource.

É só compilar e pronto.
Abri o projeto no Blend e adicionei o controle em MainPage e olhe o resultado.

E pra exibir no Visual Studio tem que criar uma nova aba na Toolbox e adicionar o controle.

Criei uma aba chamada MyControl e nela adicionei o MyControl que criei.

Bem simples não!

A teoria é que temos que adicionar uma imagem com o nome no formato {NomeDoControle}.Ico.{ExtensãoDaImagem}, não necessariamente na mesma pasta do controle, mas de preferência.

E que quando o projeto é compilado o nome do resource (a Imagem) ficara Lib.Controls.MyControl.Ico.png que tem o formato {NameSpacePadrão}.{NomeDaPasta}.{NomeDoControle}.Ico.{ExtensãoDaImagem} (obs: Caso haja mais de uma pasta, uma dentro da outra obviamente, deve-se repetir .{NomeDaPasta} para cada pasta).

Dessa forma caso você queira deixar a imagem na raiz do projeto você teria que renomea-la para {NomeDaPasta}.{NomeDoControle}.Ico.{ExtensãoDaImagem} de modo que quando compilado o resouce (a Imagem) tenha o mesmo formato de antes {NameSpacePadrão}.{NomeDaPasta}.{NomeDoControle}.Ico.{ExtensãoDaImagem}.

A imagem deve estar em um dos formatos a seguir : {XAML | BMP| PNG | GIF | JPG | JPEG}

Download do Codigo Fonte