📅  最后修改于: 2023-12-03 15:21:15.905000             🧑  作者: Mango
在 WPF 应用程序中,我们经常需要弹出消息框来向用户显示信息,并进一步让用户做出相应的决定。消息框其实是一个对话框,可能包含文本、图标、按钮等,其中最常用的消息框类型是确认框和警告框。
在 C# 中,我们可以使用 MessageBox 类来创建消息框,而 WPF 中显示消息框有以下三种常见方式:
使用 MessageBox 类创建消息框非常简单和直接,只需指定消息框的文本、标题、按钮类型和图标类型即可。以下是创建一种确认框的示例代码:
MessageBoxResult result = MessageBox.Show("确定删除此项吗?", "确认删除", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
// 删除代码
}
其中参数分别为消息文本、标题、按钮类型和图标类型。可以根据实际需要更改参数,按钮类型包含 YesNo、OK等,图标类型包含 Question、Information、Warning、Error等。
MessageBox.Show() 的返回值是一个 MessageBoxResult 枚举类型,用来表示用户点击的按钮。在示例代码中,如果用户点击 Yes 按钮,则进行删除操作。
如果需要更多的自定义功能和样式,可以使用自定义对话框。自定义对话框是一个 WPF 控件,可以根据需要添加控件、布局和样式。以下是创建自定义确认框的示例代码:
<Window x:Class="WpfApp1.CustomMessageBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="确认删除" Height="150" Width="350">
<Grid>
<TextBlock Text="确定删除此项吗?" VerticalAlignment="Center" HorizontalAlignment="Center" />
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="10">
<Button Content="Yes" Margin="0,0,10,0" Width="75" IsDefault="True" Click="Yes_Click"/>
<Button Content="No" Margin="0,0,10,0" Width="75" IsCancel="True" Click="No_Click"/>
</StackPanel>
</Grid>
</Window>
在代码中,我们创建了一个 Window 控件,其中包含一个 TextBlock 和两个 Button 控件,分别用于 Yes 和 No 按钮。在 C# 中,可以使用 ShowDialog() 方法显示自定义对话框,以下是示例代码:
CustomMessageBox customMessageBox = new CustomMessageBox();
customMessageBox.ShowDialog();
当用户点击 Yes 按钮时,会触发 Yes_Click() 的事件,以下是样例代码:
private void Yes_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
这段代码会将 DialogResult 设置为 true,并关闭自定义对话框。
MaterialDesignThemes 是一个 WPF 控件库,可以帮助我们在 WPF 应用程序中添加 Material Design 风格的控件和样式。该库还包括一个 DialogHost 控件,可以方便地显示弹出框和消息框。
以下是使用 DialogHost 控件显示消息框的样例代码:
<Window x:Class="WpfApp1.DialogHostMessageDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
Title="DialogHostMessageDemo" Height="200" Width="350">
<Grid>
<materialDesign:DialogHost x:Name="dialogHost" Margin="10">
<StackPanel VerticalAlignment="Center">
<TextBlock Text="确定删除此项吗?" VerticalAlignment="Center" HorizontalAlignment="Center" />
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="10">
<Button Content="Yes" Margin="0,0,10,0" Width="75" IsDefault="True" Click="Yes_Click"/>
<Button Content="No" Margin="0,0,10,0" Width="75" IsCancel="True" Click="No_Click"/>
</StackPanel>
</StackPanel>
</materialDesign:DialogHost>
</Grid>
</Window>
在代码中,我们创建了一个 DialogHost 控件,其中包含了和自定义对话框相同的控件和样式。在 C# 中,可以使用 Show() 方法显示对话框,以下是代码示例:
await dialogHost.ShowDialog(new DialogMessage("确认删除", "确定删除此项吗?", callback));
这段代码会创建一个 DialogMessage 实例,并将其传递给 ShowDialog() 方法。callback 参数表示当用户点击 Yes 或 No 按钮时的回调函数。
以上三种方式都可以用来显示消息框,可以根据实际需求选择使用。