【WPF】自定义消息等待弹出功能实现

1.xaml界面布局

<Window
    x:Class="Controls.Windows.WaittingWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:Controls.Windows"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="WaittingWindow"
    Width="398"
    Height="108"
    Background="{DynamicResource Skin-Background}"
    BorderBrush="{DynamicResource Skin-TextColor-Seconde}"
    BorderThickness="1"
    Closing="Window_Closing"
    Style="{StaticResource NoneWindowStyle}"
    WindowStartupLocation="CenterScreen"
    mc:Ignorable="d">
    <FrameworkElement.Resources>
        <ResourceDictionary>
            <Storyboard x:Key="Storyboard1" RepeatBehavior="Forever">
                <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(FrameworkElement.Margin)">
                    <EasingThicknessKeyFrame KeyTime="0" Value="-40,0,0,0" />
                    <EasingThicknessKeyFrame KeyTime="0:0:2" Value="400,0,0,0" />
                </ThicknessAnimationUsingKeyFrames>
            </Storyboard>
        </ResourceDictionary>
    </FrameworkElement.Resources>
    <FrameworkElement.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource Storyboard1}" />
        </EventTrigger>
    </FrameworkElement.Triggers>
    <Grid Name="gd_main">
        <Grid.RowDefinitions>
            <RowDefinition Height="50" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <ScrollViewer
            Grid.Row="0"
            Margin="0,15,0,0"
            HorizontalScrollBarVisibility="Disabled"
            VerticalScrollBarVisibility="Disabled">
            <Border BorderThickness="1">
                <Rectangle
                    Name="rectangle"
                    Width="100"
                    Margin="-40,0,0,0"
                    HorizontalAlignment="Left">
                    <Shape.Fill>
                        <LinearGradientBrush StartPoint="-0.2,0.5" EndPoint="1.2,0.5">
                            <GradientStop Color="#4CFFFFFF" />
                            <GradientStop Offset="1" Color="#FF97F90A" />
                            <GradientStop Offset="0.461" Color="#80BCEE75" />
                        </LinearGradientBrush>
                    </Shape.Fill>
                </Rectangle>
            </Border>
        </ScrollViewer>
        <TextBlock
            Name="tx_text"
            Grid.Row="1"
            Margin="8"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Foreground="{DynamicResource Skin-TextColor}"
            TextWrapping="Wrap" />
    </Grid>
</Window>

2.后台代码实现

 /// <summary>
 /// WaittingWindow.xaml 的交互逻辑
 /// </summary>
 public partial class WaittingWindow : Window
 {
     bool bShowStatus = false;
     public WaittingWindow()
     {
         InitializeComponent();
         base.ShowActivated = true;
     }
     /// <summary>
     /// 初始化
     /// </summary>
     /// <param name="text">提示信息</param>
     /// <param name="title">标题(默认空)</param>
     public void InitData(string text, string title = "")
     {
         this.tx_text.Text = text;
         bShowStatus = true;
     }

     /// <summary>
     /// 关闭提示框
     /// </summary>
     /// <returns></returns>
     public bool CloseWait()
     {
         this.Close();
         return true;
     }

     /// <summary>
     /// 提示窗体展示状态
     /// </summary>
     /// <returns>true:展示中,false:已关闭</returns>
     public bool GetShowStatus()
     {
         return bShowStatus;
     }

     /// <summary>
     /// 关闭中
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
     {
         bShowStatus = false;
     }
 }

3.实现效果如图所示

posted @ 2025-05-05 09:14  qiutian-hao  阅读(39)  评论(0)    收藏  举报