Search code examples
windowswindows-phonewindows-10

how block screen while running a task in Windows Phone RT / 10?


I am creating a application for Windows 10, and I want know, how do I lock the screen while performing a task after I clicked in button?

  private void UxBtnProximo_Click(object sender, RoutedEventArgs e)
    {
        if (dia > 0)
        {
            dia -= 1;
            DefinePapelParede();
        }

        if(dia == 0)
        {
            UxBtnProximo.Visibility = Visibility.Collapsed;
        }
        else
        {
            UxBtnProximo.Visibility = Visibility.Visible;
        }
    }

Datail, the button is in a frame and not in screen

<SplitView.Content>

        <Frame x:Name="UxFrmPrincipal">
            <Frame.ContentTransitions>
                <TransitionCollection>
                    <NavigationThemeTransition>
                        <NavigationThemeTransition.DefaultNavigationTransitionInfo>
                            <EntranceNavigationTransitionInfo/>
                        </NavigationThemeTransition.DefaultNavigationTransitionInfo>
                    </NavigationThemeTransition>
                </TransitionCollection>
            </Frame.ContentTransitions>
        </Frame>

    </SplitView.Content>

and here is page into this frame

<Grid x:Name="PrincipalGrid">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="250"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
                <RowDefinition Height="100"></RowDefinition>

            </Grid.RowDefinitions>


            <StackPanel Grid.Row="0">
            </StackPanel>
            <StackPanel Grid.Row="1">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="100"></ColumnDefinition>
                        <ColumnDefinition Width="*"></ColumnDefinition>
                        <ColumnDefinition Width="100"></ColumnDefinition>
                    </Grid.ColumnDefinitions>

                    <Grid.RowDefinitions>
                        <RowDefinition Height="100"></RowDefinition>
                    </Grid.RowDefinitions>

                    <StackPanel HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0">
                        <Button x:Name="UxBtnAnterior" FontSize="60" FontFamily="Segoe MDL2 Assets" Content="&#xE96F;" Foreground="White" Background="Transparent"></Button>
                    </StackPanel>

                    <StackPanel HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Row="0" Grid.Column="2">
                        <Button x:Name="UxBtnProximo" FontFamily="Segoe MDL2 Assets" FontSize="60" Content="&#xE970;" Foreground="White" Background="Transparent"></Button>
                    </StackPanel>
                </Grid>

            </StackPanel>

            <StackPanel Grid.Row="2" Background="#66000000" VerticalAlignment="Center" HorizontalAlignment="Center">
                <Button x:Name="UxBtnSetWallPaper" FontSize="50" Foreground="#FFFFFF" Content="Aplicar"></Button>
            </StackPanel>

            <Popup IsOpen="True" x:Name="UxPopCarregando">
                <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" UseLayoutRounding="True">
                    <StackPanel  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" UseLayoutRounding="True">
                        <ProgressRing Height="200" Width="200" UseLayoutRounding="True" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Gray">
                    </ProgressRing>
                </StackPanel>
                </Grid>
            </Popup>


        </Grid>

I Tryied popup, but not work, I may have used wrong. help!


Solution

  • This can easily be accomplished with a simple overlay on your page

    <Page>
        <Grid>
            <!-- regular content here -->
        <Grid x:Name="BlockIt" Visibility="Collapsed" Background="#55ffffff"/>
    </Page>
    

    When you want to stop user interaction, change the visibility of the BlockIt grid

    BlockIt.Visibility = Visibility.Visible;