WPF的MessageBox太丑了,自己定义了一个。
这是效果:
XAML:
<Window x:Class="AgileToDo.UMessageBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="UMessageBox" Height="130" Width="280" WindowStyle="None" Background="{x:Null}"
ResizeMode="NoResize" x:Name="main"
AllowsTransparency="True" WindowStartupLocation="CenterScreen">
<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded" >
<BeginStoryboard>
<Storyboard Name="sbOpShow">
<DoubleAnimation
Storyboard.TargetName="main"
Storyboard.TargetProperty="Opacity"
From="0" To="0.8" Duration="0:0:0.15"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>
<Window.Resources>
</Window.Resources>
<Border Background="#F03A3A3A" Opacity="1" CornerRadius="3">
<Canvas>
<Border Canvas.Top="0" Height="25" Width="{Binding ElementName=main, Path=Width,UpdateSourceTrigger=PropertyChanged}"
BorderThickness="0,0,0,1" BorderBrush="#FFEFE2E2">
<TextBlock x:Name="lblTitle" Text="test" HorizontalAlignment="Left"
Foreground="#FFCBBEBE" FontSize="14"
VerticalAlignment="Center" Margin="5"/>
</Border>
<TextBlock x:Name="lblMsg"
Foreground="White" FontSize="14"
TextWrapping="Wrap" Text="test"
HorizontalAlignment="Center" Canvas.Left="20"
Canvas.Top="50"
/>
<Border BorderBrush="#FF60C1C1" BorderThickness="0.5" Height="22"
Canvas.Bottom="10" Canvas.Right="85" MouseLeftButtonDown="Yes_MouseLeftButtonDown"
Name="border1" Width="49" Background="#FFC7C7C7" CornerRadius="2">
<TextBlock Text="YES" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border BorderBrush="#FF60C1C1" BorderThickness="0.5" Height="22"
Canvas.Bottom="10" Canvas.Right="30" MouseLeftButtonDown="No_MouseLeftButtonDown"
Name="border2" Width="49" CornerRadius="2" Background="#FFC7C7D1">
<TextBlock Text="NO" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Canvas>
</Border>
</Window>
CS:
using System.Windows;
using System.Windows.Input;
using System.Windows.Media.Animation;
namespace AgileToDo
{
/// <summary>
/// UMessageBox.xaml 的交互逻辑
/// </summary>
public partial class UMessageBox : Window
{
/// <summary>
/// 禁止在外部实例化
/// </summary>
private UMessageBox()
{
InitializeComponent();
}
public new string Title
{
get { return this.lblTitle.Text; }
set { this.lblTitle.Text = value; }
}
public string Message
{
get { return this.lblMsg.Text; }
set { this.lblMsg.Text = value; }
}
/// <summary>
/// 静态方法 模拟MESSAGEBOX.Show方法
/// </summary>
/// <param name="title">标题</param>
/// <param name="msg">消息</param>
/// <returns></returns>
public static bool? Show(string title,string msg)
{
var msgBox = new UMessageBox();
msgBox.Title = title;
msgBox.Message = msg;
return msgBox.ShowDialog();
}
private void Yes_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DialogResult = true;
this.Close();
}
private void No_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DialogResult = false;
this.Close();
}
}
}