WPF 提示框、确认框、确认输入框
1、提示框
分为提示、异常、失败、成功几种类型
方法:
/// <summary> /// 弹出提示 /// 标题:提示 /// </summary> /// <param name="strContent">内容</param> public static void ShowInfoMessageBox(string strContent) { AlertRadWindow(Application.Current.MainWindow, strContent, Application.Current.Resources["MessageInfoStyle"] as Style, "提示"); } /// <summary> /// 弹出提示 /// 标题:异常 /// </summary> /// <param name="strContent">内容</param> public static void ShowExceptionMessageBox(string strContent) { AlertRadWindow(Application.Current.MainWindow, strContent, Application.Current.Resources["MessageInfoStyle"] as Style, "异常"); } /// <summary> /// 弹出提示 /// 标题:失败 /// </summary> /// <param name="strContent">内容</param> public static void ShowErrorMessageBox(string strContent) { AlertRadWindow(Application.Current.MainWindow, strContent, Application.Current.Resources["MessageErrorStyle"] as Style, "失败"); } /// <summary> /// 弹出提示 /// 标题:成功 /// </summary> /// <param name="strContent">内容</param> public static void ShowSuccessMessageBox(string strContent) { AlertRadWindow(Application.Current.MainWindow, strContent, Application.Current.Resources["MessageSuccessStyle"] as Style, "成功"); } private static void AlertRadWindow(ContentControl owner, string strContent, Style style, string header) { RadWindow.Alert(new DialogParameters() { Owner = owner, Content = new TextBlock() { Text = strContent, TextWrapping = TextWrapping.Wrap, VerticalAlignment = VerticalAlignment.Center }, ContentStyle = style, Header = header, }); }
样式:
<Style x:Key="MessageInfoStyle" TargetType="{x:Type telerik:RadAlert}"> <Setter Property="IsTabStop" Value="false"/> <Setter Property="MinWidth" Value="200"/> <Setter Property="Width" Value="auto"/> <Setter Property="MaxWidth" Value="400"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type telerik:RadAlert}"> <Grid x:Name="LayoutRoot"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*" MinHeight="50"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Image x:Name="Icon" Grid.Row="0" Grid.Column="0" Margin="8" VerticalAlignment="Center" Height="30" Source="..\..\Images\Caption\tishi .png"/> <ContentPresenter x:Name="AlertText" Grid.Row="0" Grid.Column="1" Margin="0,8,8,8" VerticalAlignment="Center"/> <Border x:Name="HorizontalRule" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BorderBrush="Gainsboro" Height="2" BorderThickness="0 0 0 1"/> <telerik:RadButton x:Name="OK" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="8,5,8,5" MinWidth="70" Content="确定"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="MessageErrorStyle" TargetType="{x:Type telerik:RadAlert}"> <Setter Property="IsTabStop" Value="false"/> <Setter Property="MinWidth" Value="200"/> <Setter Property="Width" Value="auto"/> <Setter Property="MaxWidth" Value="400"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type telerik:RadAlert}"> <Grid x:Name="LayoutRoot"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*" MinHeight="50"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Image x:Name="Icon" Grid.Row="0" Grid.Column="0" Margin="8" VerticalAlignment="Center" Height="30" Source="..\..\Images\Caption\error.png"/> <ContentPresenter x:Name="AlertText" Grid.Row="0" Grid.Column="1" Margin="0,8,8,8" VerticalAlignment="Center"/> <Border x:Name="HorizontalRule" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BorderBrush="Gainsboro" Height="2" BorderThickness="0 0 0 1"/> <telerik:RadButton x:Name="OK" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="8,5,8,5" MinWidth="70" Content="确定"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="MessageSuccessStyle" TargetType="{x:Type telerik:RadAlert}"> <Setter Property="IsTabStop" Value="false"/> <Setter Property="MinWidth" Value="200"/> <Setter Property="Width" Value="auto"/> <Setter Property="MaxWidth" Value="400"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type telerik:RadAlert}"> <Grid x:Name="LayoutRoot"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="*" MinHeight="50"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Image x:Name="Icon" Grid.Row="0" Grid.Column="0" Margin="8" VerticalAlignment="Center" Height="30" Source="..\..\Images\Caption\success.png"/> <ContentPresenter x:Name="AlertText" Grid.Row="0" Grid.Column="1" Margin="0,8,8,8" VerticalAlignment="Center"/> <Border x:Name="HorizontalRule" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BorderBrush="Gainsboro" Height="2" BorderThickness="0 0 0 1"/> <telerik:RadButton x:Name="OK" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="8,5,8,5" MinWidth="70" Content="确定"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
2、确认框
后台方法:
/// <summary> /// 确认对话框 /// </summary> /// <param name="strContent">内容</param> /// <param name="onClosed">关闭事件 案例:new EventHandler WindowClosedEventArgs(OnClosed))</param> /// <param name="okButtonContent">确定按钮内容</param> /// <param name="cancelButtonContent">取消按钮内容</param> public static void ShowConfirmMessageBox(string strContent, EventHandler<WindowClosedEventArgs> onClosed, string okButtonContent, string cancelButtonContent) { Style style = Application.Current.Resources["MessageConfirmStyle"] as Style; RadWindow.Confirm(new DialogParameters() { Owner = Application.Current.MainWindow, Header = "确认", ContentStyle = style, Content = new TextBlock() { Text = strContent, TextWrapping = TextWrapping.Wrap, VerticalAlignment = VerticalAlignment.Center }, Closed = onClosed, OkButtonContent = okButtonContent, CancelButtonContent = cancelButtonContent, }); }
样式设置:
<Style x:Key="MessageConfirmStyle" TargetType="{x:Type telerik:RadConfirm}"> <Setter Property="IsTabStop" Value="false"/> <Setter Property="MinWidth" Value="200"/> <Setter Property="Width" Value="auto"/> <Setter Property="MaxWidth" Value="400"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type telerik:RadConfirm}"> <Grid x:Name="LayoutRoot"> <Grid.RowDefinitions> <RowDefinition Height="*" MinHeight="50"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Image x:Name="Icon" Grid.Row="0" Grid.Column="0" Margin="8" VerticalAlignment="Center" Height="30" Source="..\..\Images\Caption\help.png"/> <ContentPresenter x:Name="AlertText" Grid.Row="0" Grid.Column="1" Margin="0,8,8,8" VerticalAlignment="Center"/> <Border x:Name="HorizontalRule" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" BorderBrush="Gainsboro" Height="2" BorderThickness="0 0 0 1"/> <Grid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition Width="90"></ColumnDefinition> </Grid.ColumnDefinitions> <telerik:RadButton x:Name="OK" HorizontalAlignment="Right" Margin="8,5,8,5" MinWidth="70" Grid.Column="0" /> <telerik:RadButton x:Name="Cancel" HorizontalAlignment="Right" Margin="8,5,8,5" MinWidth="70" Grid.Column="1" /> </Grid> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
3、确认输入对话框
方法:
/// <summary> /// 输入确认对话框 /// </summary> /// <param name="strContent">内容</param> /// <param name="onClosed">关闭事件 案例:new EventHandler WindowClosedEventArgs(OnClosed))</param> /// <param name="okButtonContent">确定按钮内容</param> /// <param name="cancelButtonContent">取消按钮内容</param> public static void ShowPromptMessageBox(string strContent, EventHandler<WindowClosedEventArgs> onClosed, string okButtonContent, string cancelButtonContent) { DialogParameters dialogParameters = new DialogParameters(); dialogParameters.Owner = Application.Current.MainWindow; dialogParameters.Header = "确认"; dialogParameters.Content = strContent; dialogParameters.OkButtonContent = okButtonContent; dialogParameters.CancelButtonContent = cancelButtonContent; dialogParameters.Closed = onClosed; RadWindow.Prompt(dialogParameters); }
样式没有,可以自己自定义一个~
PS:可以将样式放入App.xaml中,然后后台通过 Application.Current.Resources就可以获取了。当然也可以将这些样式封装成UserCotrol,再应用也不错。
作者:唐宋元明清2188
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。