Criando Behavior em Silverlight

Criando Behavior em Silverlight

 

Uma das características do Silverlight a partir da versão 3 é suporte para Behavior. Behavior (Comportamento) é um modo para permitir designers adicionar funcionalidades nos elementos XAML sem código. Porém, desenvolvedores podem criar os seus próprios Behavior para serem usados. O Microsoft Blend já possui alguns behaviors, como MouseDragElement.

Para começar você precisa ter uma referencia do assembly System.Windows.Interactivity.dll em seu projeto Silverlight, disponível no endereço como apresentado na Listagem 01.

c:\Arquivos de programas\Microsoft SDKs\Expression\Blend 3\Interactivity\Libraries\Silverlight\System.Windows.Interactivity.dll

 

Listagem 01 – Assembly System.Windows.Interactivity.dll

Com o assembly Interactivity, você poderá usar uma das classes bases para criar um behavior. Existem algumas classes de interesse, mas somente será mencionada apenas três, que são as mais interessantes.

  • Behavior<T>: Behavior simples
  • TriggerAction<T>: Comportamento relacionado ao evento
  • TargettedTriggerAction<T>: TriggerAction Afeta um objeto em separado

A Figura 01 traz o diagrama de classes das classes abstratas mencionadas nos marcadores acima.

 

Diagrama

Figura 01 – Diagrama de classe System.Windows.Interactivity

Para a criação de um Behavior simples, a classe Behavior<T> é perfeita. Esta classe simplesmente tem métodos substituíveis para notificar o comportamento quando um objeto é agregado ou independente do comportamento. Então, neste tutorial será demonstrada a criação de um simples behavior para aplicação de efeito Blur nos elementos que possibilitam este tipo de efeito. A ideia é habilitar e desabilitar o efeito Blur quando o mouse estiver sobre o elemento e quando deixá-lo. Para isso, será usado dois eventos, o evento MouseEnter e MouseLeave.

Criando o Behavior

 

Inicie um projeto Silverlight versão 3 ou 4, forneça o nome de BehaviorBlur. Adicione no projeto Silverlight a referencia Interactions.dll, conforme pode ser visualizado na Figura 02 e 03.

Referencia Figura 02 - Adicionando Referencia

 

Referencia

Figura  03 – Adicionando Referencia

Crie uma classe, com o nome CBlurBehavior.cs, como mostrado na Figura 04.

Figura 04 – Adicionando classe

A classe CBlurBehavior criada irá herdar a classe abstrata Behavior<T>, onde o parametro será um UIElement, o qual  é um DependencyObject.  Então, primeiramente adicione o namespace, conforme mostrado na Figura 05.

Interactivity

Figura 05 – Adicionando Namespace  Interactivity

Adicione outro Namespace para permitir a criação do objeto Blur, como mostra a Listagem 02.

System.Windows.Media.Effects

BlurEffect efeito = null;

public class CBlurBehavior : Behavior<UIElement>

{

public CBlurBehavior() : base()

{

efeito = new BlurEffect()

{

Radius = 10

};

}

}

 

Listagem 02 – Adicionando namespace e objeto para efeito Blur

A classe Behavior, como mostrada no diagrama da Figura 01, fornece dois métodos virtuais OnAttached e OnDetaching que podem ser usados para o comportamento de suas classes. No método OnAttached deve-se criar dois eventos, MouseEnter e MouseLeave para habilitar e desabilitar o efeito Blur, respectivamente. E consequentemente, no método OnDetaching, apenas deve-se remover os eventos. A Listagem 03 traz a codificação do comportamento Blur por completo.

using System.Windows.Interactivity;

using System.Windows.Media.Effects;

 

namespace BehaviorBlur

{

 

 

public class CBlurBehavior : System.Windows.Interactivity.Behavior<System.Windows.UIElement>, Behavior<UIElement>

{

BlurEffect efeito = null;

 

public CBlurBehavior() : base()

{

efeito = new BlurEffect()

{

Radius = 10

};

}

 

 

protected override void OnAttached()

{

base.OnAttached();

this.AssociatedObject.MouseEnter += new MouseEventHandler(AssociatedObject_MouseEnter);

this.AssociatedObject.MouseLeave += new MouseEventHandler(AssociatedObject_MouseLeave);

}

 

protected override void OnDetaching()

{

base.OnDetaching();

this.AssociatedObject.MouseEnter -= new MouseEventHandler(AssociatedObject_MouseEnter);

this.AssociatedObject.MouseLeave -= new MouseEventHandler(AssociatedObject_MouseLeave);

}

 

void AssociatedObject_MouseLeave(object sender, MouseEventArgs e)

{

this.AssociatedObject.Effect = null;

}

 

void AssociatedObject_MouseEnter(object sender, MouseEventArgs e)

{

this.AssociatedObject.Effect = efeito;

}

}

}

 

Listagem 03 – Codificação completa

A Figura 06 mostra o diagrama de classe da aplicação

Diagrama de classe - aplicacao

Figura 06 – Diagrama de Classe da aplicação completa

Desta forma, você poderá aplicar seu Behavior usando o Xaml, ou no próprio Blend. Para isso adicione um retângulo na Artboard e aplique o CBlurBehavior, como mostra Figura 07.

Aplicando Behavior em elemento

Figura 07 – Aplicando CBlurBehavior no retângulo

Neste tutorial você aprendeu a criar Behavior em Silverlight o qual pode ser aplicado em qualquer aplicação que queira aplicar Efeito Blur. Para isso, somente é necessário gerar a DLL da aplicação e referenciar em outros projetos.

Abraços,

Flávia Moreira

 


blog comments powered by Disqus

NewsLetter

Por favor preencher os campos.
Quer receber artigos?


Receber em HTML?