如何在Windows Phone 8.1中显示全屏Modal ContentDialog

 丁可丁可_136 发布于 2023-01-07 23:28

当用户尝试登录我的应用程序时,我正在显示包含一些TextBlocks和ProgressBar的ContentDialog.

我选择ContentDialog是因为它是模态的并阻止用户,直到应用程序收集所需信息并准备导航到下一页.

以下链接显示可用于Windows Phone 8.1(通用应用程序)的内容对话框类.

下面的代码显示了我编写的用于显示ContentDialog的代码隐藏(我暂时将其放在OnNavigatedTo中进行测试,稍后将其移至适当的通知功能)

//Progress Bar
ProgressBar bar = new ProgressBar();
bar.IsIndeterminate = true;

//Downloading Data text
TextBlock txt = new TextBlock();
txt.Text = "Downloading data...";
txt.FontSize = 17;
txt.Foreground = new SolidColorBrush(Colors.White);
txt.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center;

//This could take a few seconds
TextBlock txt2 = new TextBlock();
txt2.Text = "This could take a few seconds.";
txt2.FontSize = 17;
txt2.Foreground = new SolidColorBrush(Colors.White);
txt2.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center;

//Please do not close the application.
TextBlock txt3 = new TextBlock();
txt3.Text = "Please do not close the application.";
txt3.FontSize = 17;
txt3.Foreground = new SolidColorBrush(Colors.White);
txt3.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center;

StackPanel stk = new StackPanel();
stk.Children.Add(bar);
stk.Children.Add(txt);
stk.Children.Add(txt2);
stk.Children.Add(txt3);


ContentDialog dlg = new ContentDialog();
dlg.Content = stk;
SolidColorBrush color = new SolidColorBrush(Colors.Black);
color.Opacity = 0.7;
dlg.Background = color;
dlg.Margin = new Thickness(0, 250, 0, 0);
dlg.ShowAsync();

这显示为 在此输入图像描述 在上面你可以看到它只覆盖部分背景

我希望它显示为 在此输入图像描述

通过制作全屏模式.

我试过改变高度和其他属性,但无法让它工作.

如果有人能指出我正确的方向,我会很高兴.

3 个回答
  • 我找到了一个消除背后代码的解决方案.不确定这是否更像是一种解决方法.但它允许我轻松使用Binding来决定何时显示此模态对话框以及何时隐藏它.

    这是我的XAML

    <Grid>
    <Grid Visibility="{Binding IsDownloadingData}" Canvas.ZIndex="1" Background="{StaticResource PartiallyTransparentBlackColor}" HorizontalAlignment="Stretch">
        <Grid.RowDefinitions>
            <RowDefinition  />
            <RowDefinition  />
            <RowDefinition  />
            <RowDefinition  />
            <RowDefinition  />
            <RowDefinition  />
        </Grid.RowDefinitions>
        <ProgressBar Grid.Row="1" IsIndeterminate="True"/>
        <TextBlock Grid.Row="2" Text="Downloading Data..." FontSize="17" Foreground="White" HorizontalAlignment="Center"/>
        <TextBlock Grid.Row="3" Text="This could take a few seconds." FontSize="17" Foreground="White" HorizontalAlignment="Center"/>
        <TextBlock Grid.Row="4" Text="Please do not close the application." FontSize="17" Foreground="White" HorizontalAlignment="Center"/>
    </Grid>
    <ScrollViewer Canvas.ZIndex="0" VerticalAlignment="Stretch" Margin="0,10,0,10">
        <!-- The XAML that should be hidden goes here (In my case LOGIN PAGE XAML) -->
    </ScrollViewer>
    

    我使用Binding来讨论具有Canvas.ZIndex ="1"的Grid的可见性,并决定何时显示模态窗口.

    2023-01-07 23:46 回答
  • 在Windows Phone 8.1中,ContentDialog具有FullSizeDesired布尔属性,当设置为true时,将以完整大小模式打开对话框.(MSDN链接).如果需要,您需要设置Background透明颜色值.

    2023-01-07 23:51 回答
  • 例如,你可以把电网作为你的内容ContentDialog,并设置其高度/宽度当前窗口或您的LayoutGrid的:

    // your code
    stk.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center;
    Grid contentGrid = new Grid();
    contentGrid.Height = Window.Current.Bounds.Height;
    contentGrid.Width = Window.Current.Bounds.Width;
    // or from LayoutGrid
    //contentGrid.Height = LayoutRoot.ActualHeight;
    //contentGrid.Width = LayoutRoot.ActualWidth;
    contentGrid.Width -= 40; // it seems that ContentDialog has some defaul margin
    contentGrid.Children.Add(stk);
    
    ContentDialog dlg = new ContentDialog();
    dlg.Content = contentGrid;
    SolidColorBrush color = new SolidColorBrush(Colors.Black);
    color.Opacity = 0.7;
    dlg.Background = color;
    await dlg.ShowAsync();
    

    您还可以考虑使用PopUp.

    2023-01-07 23:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有