Tiago Barbosa

Gadgets, Silverlight, WPF, Surface, XNA, Windows Phone 7, Azure...

Janeiro 2010 - Posts

Aceder ao conteúdo de uma div em Silverlight

Num projecto recente tive a necessidade de criar um gadget em Silverlight que recebia informação textual de uma fonte externa ao Silverlight.

Aqui existiam algumas formas de o fazer:

 

  • Através de um ficheiro xml 
  • Através de um webservice
  • Através de uma div no HTML
  • Entre outras...

 

Como nós queríamos manter o código simples escolhemos a terceira opção. Isto pode ser feito de uma maneira bastante simples.

O que eu fiz foi então o seguinte:

 

  • Criei uma div no HTML com o conteúdo que pretendia passar para o Silverlight e escondi esta div

 

<div id="a_minha_div" style="display=none"> conteúdo </div>

 

  • Na mainPage.xaml.cs acedi ao conteúdo da minha div

 

HtmlElement div = HtmlPage.Document.GetElementById("a_minha_div");

String conteudo = div.getProperty("innerHtml").toString();

 

Mais um pequeno tutorial com informação valiosa...pode dar muito jeito com coisas simples. Em casos mais complexos é aconselhável a utilização de javascript. 

 

Mudanças

Talvez os mais informados já saibam mas para os que ainda não sabem estou a estagiar na Microsoft desde o inicio da semana e está a ser uma experiência absolutamente fantástica. Toda a gente me recebeu bastante bem e o ambiente é fantástico. A parte ainda melhor é que as minhas funções são na área do Silverlight e tecnologias web por isso estou a adorar. Ainda mais porque estou rodeado de pessoas com um nível de conhecimento a nível de tecnologia que me deixa de boca aberta. 

É engraçado como nos podemos sentir tão diferentes dependendo do contexto em que nos encontramos. Eu vinha de um sítio onde era bastante bom no que fazia e agora estou num sitio onde muitas vezes me perco ao tentar acompanhar o raciocínio de certas pessoas. Mas foi a minha constante vontade em adquirir conhecimento que me colocou onde estou agora e por isso não podia estar em melhor lugar. 

Vou dando notícias...

Posted: 21 Jan 2010 20:26 by Tiago Barbosa | with 3 comment(s)
Filed under:
Microsoft Webday 2010 no Porto

 

>Participe no grande evento web da Microsoft no Porto a 2 de Fevereiro de 2010!

O WebDay traz-lhe as tendências e a inovação Web: o futuro das tecnologias como o Silverlight, o Internet Explorer, Expression, ASP.NET e Windows Azure. 1 dia completo, com três tracks, 16 sessões e os melhores oradores nacionais. Terá ainda a oportunidade de partilhar as melhores práticas com a Comunidade Web.

O Webday está desenhado para Web Developers, Criativos, Information Architects, Designers Gráficos, profissionais de User Experience, Digital Marketeers e. para todos os que partilham o interesse sobre o que o futuro da Web nos trará. Esta é a oportunidade de fazer parte do futuro da Web!

INSCREVA-SE JÁ! O NÚMERO DE LUGARES É LIMITADO. 

 

Tutorial 3: O Básico do Multitouch em Silverlight 3

Ultimamente tenho andado a explorar algumas capacidades do Silverlight 3 com as quais ainda não tinha tido qualquer tipo de contacto apesar de as achar bastante interessantes. Uma delas é o multitouch. Tenho que vos confessar que estou bastante impressionado! É uma feature muito interessante e com muito potencial em várias áreas de aplicação. 

Para termos acesso a estas funcionalidades temos que ter o Windows 7 instalado no nosso PC e o PC tem que ter suporte para multitouch. A partir daí a nossa imaginação é o limite.

Neste post vou mostrar apenas um exemplo muito básico mas que mostra como podemos começar a desenvolver aplicações multitouch em Silverlight 3. 

Para começar a utilizar as capacidades de multitouch temos que adicionar em qualquer parte da nossa aplicação o seguinte evento:

Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);

Atenção: 

Ao contrário dos eventos do rato (MouseLeftButtonDown, MouseLeftButtonUp, ...), este evento é global. Ou seja, é ligado a toda a nossa aplicação e não pode ser aplicado apenas a um objecto.

A partir deste momento a nossa aplicação está pronta a receber mensagens de toque por parte do hardware. Este evento permite-nos ter acesso a vários métodos mas os principais e que aqueles que serão usados neste post são: GetPrimaryTouchPoint e GetTouchPoints.

O GetPrimaryTouchPoint devolve o primeiro ponto que foi tocado no ecrã numa possível sequência de toques. E o GetTouchPoints devolve uma colecção de todos os pontos que estão a ser pressionados. 

Ambos os métodos devolvem objectos do tipo TouchPoint. Este obejecto permite-nos aceder a quatro valores. 

 

  • Position - Posição do toque em relação a um determinado offset. Se passarmos null ao chamar a função o valor devolvido é absoluto. 
  • Action - Existem três tipos de toque: Down, Move e Up. É bastante fácil perceber o que faz qualquer um destes eventos mas o evento Move não é tão trivial como parece. O evento Move está sempre a ser chamado mesmo que a posição do toque não seja alterada. Ou seja, existe um refresh constante deste evento.
  • TouchDevice - É o ID único que o sistema operativo atribui ao dispositivo que está a servir para o toque.
  • DirectlyOver - Devolve o objecto que está directamente no sítio pressionado.

 

Um pequeno exemplo de utilização é:

 

public MainPage()
  {
      InitializeComponent();
      Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);
 }
  
 void Touch_FrameReported(object sender, TouchFrameEventArgs e)
 {
    TouchPointCollection points = e.GetTouchPoints(null);
    TouchPoint primaryPoint = e.GetPrimaryTouchPoint(null);

            if (null != primaryPoint)
            {
                if (primaryPoint.Action == TouchAction.Down)
                    e.SuspendMousePromotionUntilTouchUp();

                switch (primaryPoint.Action)
                {
                    case TouchAction.Down:
                        // fazer alguma coisa
                        break;

                   case TouchAction.Up:
                        // fazer alguma coisa
                        break;
               case TouchAction.Move:
                        // fazer alguma coisa
                        break;
                }
            }
 }

Com este pequeno exemplo estamos a aceder a todos os pontos que são pressionados no ecrã. Agora, e tal como disse no ínicio do post, o limite é a imaginação.

Criem e depois divulguem pois o conhecimento só serve de alguma coisa se o conseguirmos passar para as outras pessoas... ;)