XAML 如何使用UWP中的ContentDialog重新创建MessageDialog的外观?

czq61nw1  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(195)

我正在使用ContentDialog来显示各种内容(* 进度条、状态文本 *),我希望使其具有与使用MesasgeDialog相同的默认外观,以便更好地适应环境。
是否有MessageDialog的默认布局和样式的XAML代码?或者有人能告诉我使用了什么字体吗?
任何适合默认MessageDialog美学的内容都将有所帮助。

^我要在ContentDialog上使用的MessageDialog样式范例。

使用XAML的答案将是理想的。

r7knjye2

r7knjye21#

您可以为此方案创建一个自定义的ContentDialog控件,然后更改ContentDialog中内容的样式。
ContentDialog的最大宽度有一个默认值,因此需要首先覆盖App.Xaml中的ContentDialogMaxWidth值。
就像这样:

<Application.Resources>
    <x:Double x:Key="ContentDialogMaxWidth">2000</x:Double>
</Application.Resources>

之后,您可以右键单击项目,选择Add-〉New Item-〉ContentDialog来创建一个自定义的ContentDialog控件。
稍微更改样式,使其看起来像MessageDialog。代码如下:

<ContentDialog
x:Class="TestContentDialog.MContentDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestContentDialog"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Please Wait">
  // you could try to change the style to meet your own requirement.
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Width="800" Height="150" >
    <Grid.RowDefinitions>
        <RowDefinition Height="48"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="48"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="20"/>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="1" Text="Please Wait" FontSize="28"/>
    <TextBlock Grid.Column="1" Grid.Row="1" FontSize="18" Text="Still checking for updates" />
    <Button Grid.Row="2" Grid.Column="1" Width="100" Height="30" Content="Close" Click="Button_Click" Margin="650,0,0,0" />
</Grid>

程式码后置:

public sealed partial class MContentDialog : ContentDialog
{
    public MContentDialog()
    {
        this.InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        this.Hide();
    }
}

在主页上使用:

<Grid>
    <Button Content="Click" Click="Button_Click"/>

    <local:MContentDialog x:Name="MContentDialog" CornerRadius="8"/>
</Grid>

  private async void Button_Click(object sender, RoutedEventArgs e)
    {
        await MContentDialog.ShowAsync();
    }

结果如下所示:

相关问题