none
Abrir una segunda ventana RRS feed

  • Pregunta

  • Buenas.

    LLevo un par de días probando esto de las uwp y tengo un problema.

    Quiero abrir una segunda ventana para que haga una funcion y cuando termine se cierre y continue la ventana proncipal.

    En Windows.Form lo hacia así:

    SegundaVentana frmVentana = new SegundaVentana(); frmVentana.ShowDialog();

    ¿Como tendría que hacerlo en uwp?

    Muchas gracias.

    Saludos.

    domingo, 20 de marzo de 2016 20:29

Respuestas

  • Hola, pues en el ejemplo que te pase, tiene el siguiente xaml para un ContentDialog que lo tiene directamente puesto en la página que va a usar. Lo recomendable es que añadas un nuevo Item de tipo ContentDialog en tu proyecto de Visual Studio. Luego puedes desde CodeBehind llamarlo como un MessageDialog normal show().

    <Page x:Class="ContentDialogDemo.MainPage"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:local="using:ContentDialogDemo"
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
          x:Name="pageRoot"
          mc:Ignorable="d">
     
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
     
            <StackPanel VerticalAlignment="Center"
                        HorizontalAlignment="Center">
     
                <Button Content="Show MessageDialog"
                        Click="ButtonShowMessageDialog_Click" />
                <Button Content="Show ContentDialog 1"
                        Click="ButtonShowContentDialog1_Click"
                        Margin="0,4" />
                <Button Content="Show ContentDialog 2"
                        Click="ButtonShowContentDialog2_Click" />
                <Button Content="Show ContentDialog 3"
                        Click="ButtonShowContentDialog3_Click"
                        Margin="0,4" />
            </StackPanel>
     
            <ContentDialog x:Name="MyContentDialog"
                            VerticalAlignment="Stretch"
                            Title="Lorem Ipsum"
                            PrimaryButtonText="OK"
                            IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
                            SecondaryButtonText="Cancel"
                            MaxWidth="{Binding ActualWidth, ElementName=pageRoot}">
                <StackPanel>
                    <TextBlock Text="Aliquam laoreet magna sit amet mauris iaculis ornare. Morbi iaculis augue vel elementum volutpat."
                                TextWrapping="Wrap" />
                    <CheckBox x:Name="checkBoxAgree"
                                Content="Agree" />
                </StackPanel>
     
            </ContentDialog>
        </Grid>
    </Page>
    

    Luego por code behind puedes abrirlo de la siguiente manera:

    private async void ButtonShowContentDialog3_Click(object sender, RoutedEventArgs e) {
        var btn = sender as Button;
        var result = await MyContentDialog.ShowAsync();
        btn.Content = "Result: " + result;
    }
    

    En el ContentDialog tienes dos botones que pertenecen al mismo control para controlar los eventos que pueden ser "Aceptar" y "Cancelar"

    PrimaryButtonText="OK"
    SecondaryButtonText="Cancel"
    

     
    • Marcado como respuesta AloDa sábado, 26 de marzo de 2016 19:00
    jueves, 24 de marzo de 2016 10:28
    Moderador

Todas las respuestas

  • En UWP no existe ventanas tal como están definidas en Windows Forms o WPF sino que son definidas como popups.

    Podrías hacer uso de los ContentDialog que son diálogo customizables.

    Aquí tienes buenos ejemplos por donde empezar.

    http://www.reflectionit.nl/blog/2015/windows-10-xaml-tips-messagedialog-and-contentdialog

    saludos!


    martes, 22 de marzo de 2016 13:54
    Moderador
  • Entonces ¿como puedo cambiar de "formulario"?

    Tengo el principal y al pulsar un botón quiero que cargue otro y luego volver otra vez al principal.

    martes, 22 de marzo de 2016 23:17
  • Hola, pues en el ejemplo que te pase, tiene el siguiente xaml para un ContentDialog que lo tiene directamente puesto en la página que va a usar. Lo recomendable es que añadas un nuevo Item de tipo ContentDialog en tu proyecto de Visual Studio. Luego puedes desde CodeBehind llamarlo como un MessageDialog normal show().

    <Page x:Class="ContentDialogDemo.MainPage"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:local="using:ContentDialogDemo"
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
          x:Name="pageRoot"
          mc:Ignorable="d">
     
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
     
            <StackPanel VerticalAlignment="Center"
                        HorizontalAlignment="Center">
     
                <Button Content="Show MessageDialog"
                        Click="ButtonShowMessageDialog_Click" />
                <Button Content="Show ContentDialog 1"
                        Click="ButtonShowContentDialog1_Click"
                        Margin="0,4" />
                <Button Content="Show ContentDialog 2"
                        Click="ButtonShowContentDialog2_Click" />
                <Button Content="Show ContentDialog 3"
                        Click="ButtonShowContentDialog3_Click"
                        Margin="0,4" />
            </StackPanel>
     
            <ContentDialog x:Name="MyContentDialog"
                            VerticalAlignment="Stretch"
                            Title="Lorem Ipsum"
                            PrimaryButtonText="OK"
                            IsPrimaryButtonEnabled="{Binding IsChecked, ElementName=checkBoxAgree, Mode=OneWay}"
                            SecondaryButtonText="Cancel"
                            MaxWidth="{Binding ActualWidth, ElementName=pageRoot}">
                <StackPanel>
                    <TextBlock Text="Aliquam laoreet magna sit amet mauris iaculis ornare. Morbi iaculis augue vel elementum volutpat."
                                TextWrapping="Wrap" />
                    <CheckBox x:Name="checkBoxAgree"
                                Content="Agree" />
                </StackPanel>
     
            </ContentDialog>
        </Grid>
    </Page>
    

    Luego por code behind puedes abrirlo de la siguiente manera:

    private async void ButtonShowContentDialog3_Click(object sender, RoutedEventArgs e) {
        var btn = sender as Button;
        var result = await MyContentDialog.ShowAsync();
        btn.Content = "Result: " + result;
    }
    

    En el ContentDialog tienes dos botones que pertenecen al mismo control para controlar los eventos que pueden ser "Aceptar" y "Cancelar"

    PrimaryButtonText="OK"
    SecondaryButtonText="Cancel"
    

     
    • Marcado como respuesta AloDa sábado, 26 de marzo de 2016 19:00
    jueves, 24 de marzo de 2016 10:28
    Moderador
  • Muchas gracias.

    Lo haré de esa manera.

    De todos modos, menuda manera de complicarse la vida, con lo fácil que era con los forms.

    Saludos.

    sábado, 26 de marzo de 2016 19:01
  • Muchas gracias.

    Lo haré de esa manera.

    De todos modos, menuda manera de complicarse la vida, con lo fácil que era con los forms.

    Saludos.

    Bueno es un forma de hacerlo para que sea como un popup y tengas la sensación de que tienes tu tarea detrás.

    Pero por supuesto podrías navegar a través de dos páginas. Creas dos páginas Page1.xaml y Page2.xaml.

    • Page1.xaml navega a Page2.xaml donde está el formulario para rellenar.
    • Una vez terminado, puedes navegar hacia atrás. Sería otra opción.

    Un saludo.

    domingo, 27 de marzo de 2016 17:53
    Moderador