Jump to content
Filipe_O

Duvidas de projecto wp7, com microsoft blend e visual studio

Recommended Posts

Filipe_O

Boas

Estou a "finalizar" um projecto para windows phone, e já coloquei aqui algumas duvidas.

Para não colocar uma duvida por tópico, aqui vão:

1) Tenho uma listbox, e nessa listbox apresento resultados de um formulário..

Gostaria que item da listbox fosse um link.. encontrei este tuturial:

Na função construtora, defino este evento:

listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);

E na função do evento, digo:

void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
	    ListBox lb = sender as ListBox;
	    if (lb != null && lb.SelectedItem != null)
	    {
		    string url = lb.SelectedItem as string;
		    if (!string.IsNullOrEmpty(url))
		    {
			    Process.Start(url);
		    }
	    }
    }

Até eu que não sou de programação percebo este código... acontece que na minha função construtora não tenho a hipotese de criar um evento SelectedIndexChanged..

Terei algo mal?

Procuro por outra maneira?

2)

Tenho uma imagem que é um mapa.

Esse mapa tem esferas desenhadas, que são links

Essas esferas, abrem (tornam visível) uma barra no canto direito do ecrã.

Eu tenho a opção de o utilizador navegar pelo mapa.

E a posição dessa barra, está definida em relação ao mapa e não em relação ao ecrã do telemóvel.

Ora, escusado será dizer, que quando o utilizador move o mapa, por exemplo, para a direita, ao carregar numa das esferas não se vê a barra.

Percebem?

Ou seja, teria de dizer que a posição da barra é em relação ao ecrã do telemóvel, e não, em relação ao mapa.

Como faço isso?

Para o visual estou a utilizar o microsoft expression blend.

Obrigado

Share this post


Link to post
Share on other sites
petvetbr

1) Tenho uma listbox, e nessa listbox apresento resultados de um formulário..

Gostaria que item da listbox fosse um link.. encontrei este tuturial:

Na função construtora, defino este evento:

listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);

E na função do evento, digo:

void listBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
	 ListBox lb = sender as ListBox;
	 if (lb != null && lb.SelectedItem != null)
	 {
		 string url = lb.SelectedItem as string;
		 if (!string.IsNullOrEmpty(url))
		 {
			 Process.Start(url);
		 }
	 }
 }

Até eu que não sou de programação percebo este código... acontece que na minha função construtora não tenho a hipotese de criar um evento SelectedIndexChanged..

Terei algo mal?

Procuro por outra maneira?

Existe o SelectionChanged que pode fazer isto.

2)

Tenho uma imagem que é um mapa.

Esse mapa tem esferas desenhadas, que são links

Essas esferas, abrem (tornam visível) uma barra no canto direito do ecrã.

Eu tenho a opção de o utilizador navegar pelo mapa.

E a posição dessa barra, está definida em relação ao mapa e não em relação ao ecrã do telemóvel.

Ora, escusado será dizer, que quando o utilizador move o mapa, por exemplo, para a direita, ao carregar numa das esferas não se vê a barra.

Percebem?

Ou seja, teria de dizer que a posição da barra é em relação ao ecrã do telemóvel, e não, em relação ao mapa.

Como faço isso?

Para o visual estou a utilizar o microsoft expression blend.

Neste caso seria interessante ver como está o XAML da sua tela, assim pela explicação está um pouco difícil de entender como isto está codificado.


Fernando Lage Bastos - MCP/MCTS/MCPD

Share this post


Link to post
Share on other sites
Filipe_O

Tenho uma pagina com uma listob.E quero que ao carregar num item da listbox, abra outra pagina, com dados (fornecidos pela mesma função que atribui links a cada item).Esses dados estarão em caixas de texto.

Página de origem:

private void lista_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
var opcao = "";
opcao = (sender as ListBox).SelectedValue.ToString();
NavigationService.Navigate(new Uri("/animal.xaml?opcao=" + opcao, UriKind.Relative));
 }

Página de destino:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);

if(NavigationContext.QueryString.TryGetValue("opcao",out opcao))

textBlock1.Text = opcao;
}

Os valores são dados por uma base de dados, que na mesma tabela tem o nome (texto da opção), numero, etc..

Chamo os dados por uma query num web service.

Edited by Filipe_O

Share this post


Link to post
Share on other sites
petvetbr

Qual é a sua dúvida? Não ficou muito claro, você somente explicou o que está fazendo até agora.


Fernando Lage Bastos - MCP/MCTS/MCPD

Share this post


Link to post
Share on other sites
Filipe_O

Agora já a consegui resolver =)

A questão do XNA:

Eu tenho a opção de o utilizador navegar pelo mapa.

E a posição dessa barra, está definida em relação ao mapa e não em relação ao ecrã do telemóvel.

Ora, escusado será dizer, que quando o utilizador move o mapa, por exemplo, para a direita, ao carregar numa das esferas não se vê a barra.

Percebem?

Ou seja, teria de dizer que a posição da barra é em relação ao ecrã do telemóvel, e não, em relação ao mapa.

Como faço isso?

A estrutura que tenho é esta

Está tudo dentro de um ContentPanel..

Já tentei por tudo menos a barra, no content panel, não nunciona... já tentei por só a barra também não funciona...

Edited by Filipe_O

Share this post


Link to post
Share on other sites
Filipe_O

Neste momento, inclui o mapa e os botões a um canvas...

Se aplicar o MouseDragElementBehavior á imagem, ao mover a imagem, os botões não a acompanham (mas se não mexer no mapa, ou se carregar no botão, este funciona)

Se aplicar o MouseDragElementBehavior ao canvas, os links movem-se com a imagem, mas não funcionam (o evento não é executado)

Se colocar um evento no expression blend, para um botão, funciona (com o comportamento a afectar o canvas, o botão move-se, e ao carregar o evento que coloquei no expression blend, é executado).

Porque será que os eventos que coloco no visual studio (c#), não funcionam?

Se o comportamento não estiver a afectar o canvas, mas sim, a imagem, a programação funciona :S

Sabem-me ajudar?

Edited by Filipe_O

Share this post


Link to post
Share on other sites
Filipe_O

O problema é que para funcionar tudo como um todo, preciso de dizer que a imagem e os links, são "child" do canvas..

private void phoneApplicationPage_Orientationchanged(object sender, OrientationchangedEventArgs e)
 {
	 if ((Orientation == PageOrientation.PortraitUp) || (Orientation == PageOrientation.PortraitDown))
(...)
        Image imagem_mapa = new Image();
           Ellipse _14 = new Ellipse();
           _14.Width  = 44;
           _14.Height = 41;
           Canvas.SetLeft(_14, 56);
           Canvas.SetTop(_14, 299);
           this.canvas_mapa.Children.Add(imagem_mapa);
           this.canvas_mapa.Children.Add(_14);
           MessageBox.Show("ADS");
 }

XAML:

<Canvas Height="722" Width="454" Canvas.Left="22" Name="canvas_mapa">
<i:Interaction.Behaviors>
 <el:MouseDragElementBehavior/>
</i:Interaction.Behaviors>

A declaração está na função da orientationchanged, por um outro problema.

A questão é:

Ele sabe que o elemento "_14" no c# corresponde ao elemento do "_14", do xaml?

Edited by Filipe_O

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.