繁体   English   中英

如何在C#中创建类似Groove Music的消息框

[英]How Can I create a Message Box like Groove Music in C#

我需要在消息框中显示信息,如下所示:

留言框

如何创建类似的消息框?

如果您要做的只是创建一个带有标题,文本内容和可自定义按钮(命令)的简单消息框,然后使用MessageDialog类。

private void showDialog()
{
    var dialog = new MessageDialog("You have unsaved changes. Continue?", "Warning");
    dialog.Commands.Add(new UICommand("OK", handler));
    dialog.Commands.Add(new UICommand("Cancel", handler));
    dialog.ShowAsync();
}

private void handler(IUICommand command)
{
    System.Diagnostics.Debug.WriteLine($"The user clicked {command.Label}");
}

MessageDialog屏幕截图

如果您需要更多自定义内容,则需要对ContentDialog类进行子类化。 在解决方案资源管理器>添加>新建项目中右键单击您的项目,然后从列表中选择“内容对话框”。 您可以使用XAML编辑器来自定义对话框的外观,选择要显示的按钮,等等。

<ContentDialog
    x:Class="App9.MyDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App9"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    PrimaryButtonText="OK"
    SecondaryButtonText="Cancel">

    <Grid>
        <TextBlock TextWrapping="Wrap">
            <Run>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed aliquet iaculis sapien, in lacinia sem auctor quis.
                Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam finibus eu sapien quis
                ultricies. In tristique nec magna quis fermentum. Pellentesque elit urna, tincidunt sit amet suscipit non, lacinia
                vitae orci. Etiam vel tortor neque.
            </Run>
            <LineBreak/>
            <LineBreak/>
            <Run>
                Integer dictum tortor at quam feugiat, vel eleifend neque accumsan. Maecenas
                pellentesque, augue sed vulputate placerat, erat urna aliquam erat, a posuere mi massa vitae velit. Donec gravida
                dui quis tortor semper, vel efficitur leo ultricies. Sed tincidunt ultrices dui, vitae congue purus venenatis a.
                Ut aliquam neque leo, a vehicula nisl fermentum elementum. In euismod, erat ac congue fermentum, dui nunc ultrices
                tellus, vitae fringilla risus felis at tortor.
            </Run>
        </TextBlock>
    </Grid>
</ContentDialog>

您可以显示如下对话框:

private async Task displayDialogAsync()
{
    var dialog = new MyDialog();  // Whatever you named your ContentDialog subclass
    var result = await dialog.ShowAsync();

    if (result == ContentDialogResult.Primary)
    {
        // User clicked OK
    }
    else if (result == ContentDialogResult.Secondary)
    {
        // User clicked Cancel
    }
}

ContentDialog屏幕截图

您不必ContentDialog即可使用它:

ContentDialog CD_Popup = new ContentDialog();

CD_Popup.Title = "Title";
CD_Popup.Content = "Content";
CD_Popup.PrimaryButtonText = "Primary button text";
CD_Popup.PrimaryButtonClick += (sender, args) =>
{
    // Primary button method
};
CD_Popup.SecondaryButtonText = "Secondary button text";
CD_Popup.SecondaryButtonClick += (sender, args) =>
{
    // Secondary button method
};

await CD_Popup.ShowAsync();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM