Wpf 系统异常提示框

来源:互联网 发布:知网数据期刊论文 编辑:程序博客网 时间:2024/06/06 05:45

源码:


wpf页:

<Window x:Class="Wpf.MessageBox1"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="420" Width="350"
        MouseDown="Window_MouseDown"
        Opacity="{Binding Opacity}"
        Background="{x:Null}"
        WindowState="{Binding State,Mode=TwoWay}"
        WindowStyle="None" AllowsTransparency="True">
    <Window.Resources>
        <Style x:Key="buttonstyle_s1" TargetType="Button">
            <Setter Property="Foreground"  Value="Black"></Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
        <!--button按钮样式-->
        <ControlTemplate  x:Key="CornerButton" TargetType="{x:Type Button}">
            <Border BorderBrush="#838187"  BorderThickness="1" CornerRadius="5" Background="#F6F5F3">
                <ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
        </ControlTemplate>
        <ControlTemplate  x:Key="CornerButton1" TargetType="{x:Type Button}">
            <Border BorderBrush="#ECE9D8"  BorderThickness="1" CornerRadius="2" Background="#F6F5F3">
                <ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
        </ControlTemplate>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="0.5" />
            <RowDefinition Height="30" />
            <RowDefinition Height="100" />
            <RowDefinition Height="5" />
            <RowDefinition Height="*" />
            <RowDefinition Height="15" />
            <RowDefinition Height="0.1" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="50"/>
        </Grid.ColumnDefinitions>
        <Grid Grid.Row="0" Grid.ColumnSpan="2" Background="Brown"></Grid>
        <Grid Grid.Row="1" Grid.ColumnSpan="2" Background="#7B9CE3">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="30"/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="系统提示!" Margin="10,8,0,0" Grid.Row="0" Grid.Column="0" FontSize="12"
                   FontWeight="Bold"></TextBlock>
            <Button Content="X" Grid.Row="0" Height="18" Width="18" Grid.Column="1" Template="{StaticResource CornerButton1}"
                    Style="{StaticResource ResourceKey=buttonstyle_s1}"
                    FontSize="12"  
                    Background="Transparent"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    Command="{Binding ErrorMessageCloseCommand}">
            </Button>
        </Grid>
        <Grid Grid.Row="2" Grid.ColumnSpan="2" Background="#ECE9D8">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="20" />
                <RowDefinition Height="10" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="80"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="55"/>
                <ColumnDefinition Width="20"/>
                <ColumnDefinition Width="55"/>
                <ColumnDefinition Width="15"/>
            </Grid.ColumnDefinitions>
            <Image Grid.Row="0" Grid.Column="0" Source="Image\Achtung.jpg" Height="40" Width="40" Margin="20,0,0,0"></Image>
            <TextBlock Text="{Binding Message}"
                   Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"
                   FontSize="15"
                   FontWeight="Bold"/>
            <Button Content="详情"  Template="{StaticResource CornerButton}" Grid.Row="1" Grid.Column="2" Command="{Binding IsVisibilityDetailCommand}"></Button>
            <Button Content="确定"  Template="{StaticResource CornerButton}" Grid.Row="1" Grid.Column="4" Command="{Binding ErrorMessageCloseCommand}"></Button>
        </Grid>
        <Grid Grid.Row="3" Opacity="0.2" Grid.ColumnSpan="2">
            <Border Background="Red" Height="Auto"/>
        </Grid>
        <Grid Grid.Row="4" Grid.ColumnSpan="3" Background="#ECE9D8" Visibility="{Binding IsVisibility,Mode=TwoWay}">
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="10"/>
                <ColumnDefinition Width="80"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="10"/>
            </Grid.ColumnDefinitions>
            <TextBlock Text="View:" Margin="0,12,0,0" Height="30" Grid.Row="1" Grid.Column="1" />
            <TextBox Text="{Binding View}" Height="30" Grid.Row="1" Grid.Column="2" />
            <TextBlock Text="ViewModel:" Height="30" Margin="0,12,0,0" Grid.Row="2" Grid.Column="1"/>
            <TextBox Text="{Binding ViewModel}" Height="30" Grid.Row="2" Grid.Column="2" />
            <TextBlock Text="Method:" Margin="0,12,0,0" Height="30" Grid.Row="3" Grid.Column="1"/>
            <TextBox  Text="{Binding Method}" Height="30" Grid.Row="3" Grid.Column="2" />
            <TextBlock Text="Exception:" Height="30" Grid.Row="4" Grid.Column="1"/>
            <TextBox
                 ScrollViewer.CanContentScroll="True"  VerticalScrollBarVisibility="Visible"
                 AcceptsReturn="True"
                 Text="{Binding ExceptionString}"
                 HorizontalAlignment="Stretch"
                 Grid.Row="4" Grid.Column="2"/>
        </Grid>
        <Grid Grid.Row="5" Background="#ECE9D8" Grid.ColumnSpan="2" Visibility="{Binding IsVisibility,Mode=TwoWay}">
            <Border  Name="ResizeBottomRight" MouseMove="ResizePressed"
                    MouseDown="ResizePressed" Height="15" Width="15"
                    HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,3,3" RenderTransformOrigin="0.5,0.5">
                <Border.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform Angle="88.182"/>
                        <TranslateTransform/>
                    </TransformGroup>
                </Border.RenderTransform>
                <Border.Background>
                    <DrawingBrush>
                        <DrawingBrush.Drawing>
                            <GeometryDrawing Geometry="M96,128 L896,928 96,128 z M352,384 L128,160 172.19048,160 352,160 352,384 z M608,640 L384,416 608,416 608,640 z M608,384 L384,384 384,160 608,160 608,384 z M864,896 L640,672 864,672 864,896 z M864,640 L640,640 640,416 864,416 864,640 z M864,384 L640,384 640,160 864,160 864,384 z" Brush="#888888"></GeometryDrawing>
                        </DrawingBrush.Drawing>
                    </DrawingBrush>
                </Border.Background>
            </Border>
        </Grid>
        <Grid Grid.Row="6" Grid.ColumnSpan="2" Background="Brown" Visibility="{Binding IsVisibility,Mode=TwoWay}"></Grid>
    </Grid>
</Window>

页面后台:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace Wpf
{
    /// <summary>
    /// MessageBox1.xaml 的交互逻辑
    /// </summary>
    public partial class MessageBox1 : Window
    {
        public MessageBox1()
        {
            InitializeComponent();
            //执行拖拽
            this.SourceInitialized += delegate(object sender, EventArgs e)
            {
                this._HwndSource = PresentationSource.FromVisual((Visual)sender) as HwndSource;
            };
            //鼠标移入到边缘收缩
            this.MouseMove += new MouseEventHandler(Window_MouseMove);
        }

        /// <summary>
        /// 移动窗口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                DragMove();
            }
        }

        /// <summary>
        ///  初始化窗体可以缩放大小
        /// </summary>
        private const int WM_SYSCOMMAND = 0x112;
        private HwndSource _HwndSource;
        private Dictionary<ResizeDirection, Cursor> cursors = new Dictionary<ResizeDirection, Cursor>
        {
            {ResizeDirection.BottomRight, Cursors.SizeNWSE},
        };
        private enum ResizeDirection
        {
            BottomRight = 8,
        }

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        /// <summary>
        /// 移动鼠标事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_MouseMove(object sender, MouseEventArgs e)
        {
            if (Mouse.LeftButton != MouseButtonState.Pressed)
            {
                FrameworkElement element = e.OriginalSource as FrameworkElement;
                if (element != null && !element.Name.Contains("Resize"))
                    this.Cursor = Cursors.Arrow;
            }
        }

        /// <summary>
        /// 调整压
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ResizePressed(object sender, MouseEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
            ResizeDirection direction = (ResizeDirection)Enum.Parse(typeof(ResizeDirection), element.Name.Replace("Resize", ""));
            this.Cursor = cursors[direction];
            if (e.LeftButton == MouseButtonState.Pressed)
                ResizeWindow(direction);
        }

        /// <summary>
        /// 调整窗口
        /// </summary>
        /// <param name="direction"></param>
        private void ResizeWindow(ResizeDirection direction)
        {
            SendMessage(_HwndSource.Handle, WM_SYSCOMMAND, (IntPtr)(61440 + direction), IntPtr.Zero);
        }
    }
}

0 0
原创粉丝点击