locked
Navegação entre páginas RRS feed

  • Pergunta

  • Olá!

    Acabo de criar uma Aplicação Silverlight 4 e estou com uma dúvida. Tenho a MainPage.xaml ( usercontrol), onde há um controle do tipo Hyperlink, e este link é o "Login". Ao clicar nele, deveria ir para uma Page1.xaml ( page )

     

    Além da Page1.xaml, criei também a page2.xaml ( page ). Onde terá um botão apenas para voltar a página1.

     

    Gostaria de saber como fazer esta navegação de maneira que o usuário não consiga copiar o link pela URL e ir direto para Page1.xaml, ou Page2.xaml sem passar pela págian inicial de login...por exemplo.

     

    Muito obrigada.

     

    segunda-feira, 29 de março de 2010 19:07

Respostas

  • Ah.. agora q vi q era Silverlight...

    eu uso o Frame para isso

    Frame1.Content = new Page1();


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    • Marcado como Resposta user__2006 quarta-feira, 14 de abril de 2010 10:19
    quinta-feira, 1 de abril de 2010 21:27

Todas as Respostas

  • Putz...to com a mesma duvida...no windows forms por exemplo nós fazemos form f = new form(); f.ShowDialong();
    Raphael Saccomani
    terça-feira, 30 de março de 2010 19:32
  • Usa um LinkButton:

    <

     

    asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>

    protected

     

    void LinkButton1_Click(object sender, EventArgs e) {

    Response.Redirect(

    "Pagina")

    }


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    terça-feira, 30 de março de 2010 21:56
  • Será que consigo algum exemplo mais ou menos com este mecanismo? Achei que fosse bem básico ter esta estrutura de navegação, onde temos a primeira página de login, que chamará uma segunda, e a segunda uma terceira página. POrém, mostrar apenas o histórico da segunda e terceira página. E mesmo assim, ao copiar o link, forçar ir sempre para página de login.Estou usando Silverlight 4 e visual studio 2010 RC.

     

    Obrigada.

     

     

    quarta-feira, 31 de março de 2010 19:55
  • Tente usar isso no seu código

    this.NavigationService.Navigate(new Uri("/About", UriKind.Relative));

     

    onde "/About" é sua pagina desejada!

     

     


    Raphael Saccomani
    quinta-feira, 1 de abril de 2010 13:07
  • Consegui criar a navegação,  Segue código da aplicação... Funcionou, mas será que está correto?

    App.xaml:

    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 x:Class="SilverlightApplication1.App"
                         xmlns:navigationCore="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
                 >
        <Application.Resources>


            <!--Define application pages-->
            <navigationCore:UriMapper x:Key="MyMapper">
                <navigationCore:UriMapping Uri="" MappedUri="/Pages/Page1.xaml"/>
                <navigationCore:UriMapping Uri="Page1" MappedUri="/Pages/Page1.xaml"/>
                <navigationCore:UriMapping Uri="Page2" MappedUri="/Pages/Page2.xaml"/>
            </navigationCore:UriMapper>
           
           
        </Application.Resources>
    </Application>

     

    MainPage.xaml:

    <navigation:Page x:Class="SilverlightApplication1.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
         xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
        d:DesignHeight="300" d:DesignWidth="400">

        <Grid x:Name="LayoutRoot" Background="White">
            <Button Content="Login" Height="23" HorizontalAlignment="Left" Margin="100,59,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />


        </Grid>
    </navigation:Page>

     

    MainPage.xaml.cs:

     private void button1_Click(object sender, RoutedEventArgs e)
            {
                //Open TemplatePage ...
                TemplatePage mTemplatePage = new TemplatePage();
                //Set new content
                this.Content = mTemplatePage;
            }

     

    TemplatePage.xaml:

     

    <navigation:Page x:Class="SilverlightApplication1.TemplatePage"
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
               xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
               mc:Ignorable="d"
               xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
               xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
               d:DesignWidth="640" d:DesignHeight="480"
               Title="TemplatePage">
       
        <Grid x:Name="LayoutRoot">
           
            <TextBlock Height="23" HorizontalAlignment="Left" Margin="157,12,0,0" Name="textBlock1" Text="Informações Default para todas páginas" VerticalAlignment="Top" Width="441" />

            <navigation:Frame x:Name="MainFrame" NavigationFailed="MainContent_NavigationFailed" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Source="Page1" UriMapper="{StaticResource MyMapper}" Background="White" MinWidth="200" MinHeight="20" Margin="40,41,0,153" Width="527" HorizontalAlignment="Left" JournalOwnership="UsesParentJournal" BorderBrush="Black" TabNavigation="Local"></navigation:Frame>


        </Grid>
    </navigation:Page>

     

    TemplatePage.xaml.cs:

            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
            }

            private void MainContent_NavigationFailed(object sender, NavigationFailedEventArgs e)
            {
                string error_msg = "Erro";
                throw new Exception(string.Format(error_msg, e.Uri));
            }

     

     

    Page1.xaml:

     

    <navigation:Page x:Class="SilverlightApplication1.Page1"
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
               xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
               mc:Ignorable="d"
               xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
               d:DesignWidth="640" d:DesignHeight="480"
               Title="Page1">
        <Grid x:Name="LayoutRoot">
            <TextBlock Height="23" HorizontalAlignment="Left" Margin="292,201,0,0" Name="textBlock1" Text="Page1" VerticalAlignment="Top" />
            <Button Content="Go to Page 2" Height="23" HorizontalAlignment="Left" Margin="284,236,0,0" Name="button1" VerticalAlignment="Top" Width="94" Click="button1_Click" />
        </Grid>
    </navigation:Page>

     

    Page1.xaml.cs:

     

            // Executes when the user navigates to this page.
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {

                   if (NavigationService.CanGoForward)
                {
                    NavigationService.GoForward();
                }
                else
                {
                    this.NavigationService.Navigate(new Uri("Page2", UriKind.Relative));
                }
            }

     

    Page2.xaml:

     

    <navigation:Page x:Class="SilverlightApplication1.Page2"
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
               xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
               mc:Ignorable="d"
               xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
               d:DesignWidth="640" d:DesignHeight="480"
               Title="Page2">
        <Grid x:Name="LayoutRoot">
            <TextBlock Height="23" HorizontalAlignment="Left" Margin="213,109,0,0" Name="textBlock1" Text="Page2" VerticalAlignment="Top" />
            <Button Content="Go to Page 1" Height="62" HorizontalAlignment="Left" Margin="197,138,0,0" Name="button1" VerticalAlignment="Top" Width="94" Click="button1_Click" />
        </Grid>
    </navigation:Page>

     

    Page2.xaml.cs:

     

            // Executes when the user navigates to this page.
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
            }

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                if (NavigationService.CanGoBack)
                {
                    NavigationService.GoBack();
                }
                else
                {
                    this.NavigationService.Navigate(new Uri("Page1", UriKind.Relative));
                }
            }

    quinta-feira, 1 de abril de 2010 14:02
  • O problema agora é, ao navegar pela aplicação, aparecerá por exemplo: http://localhost:22222/SilverlightApplication1TestPage.aspx#Page1 e ao dar refresh, volta para página inicial, porém na URL permance este link... Como manter a página no mesmo estado ao dar refresh no broswer?
    quinta-feira, 1 de abril de 2010 19:30
  • Ah.. agora q vi q era Silverlight...

    eu uso o Frame para isso

    Frame1.Content = new Page1();


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    • Marcado como Resposta user__2006 quarta-feira, 14 de abril de 2010 10:19
    quinta-feira, 1 de abril de 2010 21:27