Jump to content

Duvidas de projecto wp7, com microsoft blend e visual studio


Recommended Posts

Posted

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

Posted

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

Posted (edited)

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
Posted (edited)

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
Posted (edited)

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
Posted (edited)

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.