【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.实现效果如图所示


浙公网安备 33010602011771号