WPF弹出层

使用WPF窗口作为弹出层

前几天领导让我在WPF的查询页面添加一个弹出层,防止用户查询大量数据时疯狂点击查询按钮或其他地方,我想了想最后决定用一个新的窗口做弹出层,WPF上面的控件都是使用 “Material Design In XAML Toolkit” 做的。

我自己做的弹出层非常简单,就是一个窗体上放了一个会转的半圆和一个Label控件
弹出层窗体设计器
但是运行时发现不太正常,点击主窗口时,弹出层会被主窗口覆盖在下面
弹出层被主窗口覆盖
然后设置了属性

//loadingWindow是弹出窗口的名称
loadingWindow.Owner = this;

设置完成后,发现弹出窗口有白色的背景色
白色背景色
然后设置了Windows窗体属性:

Background="#00000000"

最终效果:
最终效果
最后,上代码
主窗体 中添加弹出层对象:

public partial class MainWindow : Window
 {
 	private LoadingWindow loadingWindow = new LoadingWindow();//创建对象
 	public MainWindow()
 	{
 	}
 }

主窗体 打开弹出层代码:

private void StartLoading()
{
	loadingWindow.Owner = this;//设置弹出层在主窗体上方
	loadingWindow.Show();//打开弹出层
	IsEnabled = false;//设置主窗体不可用
}

主窗体 关闭弹出层代码:

private void StopLoading()
{
	loadingWindow.Hide();//弹出层隐藏(如果直接Close的话,只能打开弹出层一次)
	IsEnabled = true;//主窗体可用
}

主窗体 使用弹出层(样例):

private void btn_SearchinReciveGoods_Click(object sender, RoutedEventArgs e)
{
	StartLoading();//打开弹出层
	try
	{
		using (SqlConnection con = new SqlConnection(conStr))
		{
			#region 查询、绑定数据到控件
			string sqlCmd = "SELECT * FROM Table";
			using (SqlDataAdapter sda = new SqlDataAdapter(sqlCmd, con))
			{
				DataSet ds = new DataSet();
				_ = sda.Fill(ds);
				dg_ReciveGood.DataContext = ds.Tables[0];
			}
			#endregion
			StopLoading();//绑定完成后,关闭弹出层
		}
	}
	catch (Exception)
	{
		StopLoading();//数据查询失败或其他原因导致异常时,关闭弹出层
		throw;
	}
}

弹出层 XAML代码(使用了"Material Design In XAML Toolkit" 控件)

<Window x:Class="IG_SIMS_PAD.LoadingWindow"
        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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:IG_SIMS_PAD"
        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        mc:Ignorable="d"
        Title="LoadingWindow" Height="200" Width="250" WindowStyle="None" WindowStartupLocation="CenterScreen" Background="#00000000"  Foreground="{x:Null}" AllowsTransparency="True">
    <Grid>
        <materialDesign:Card UniformCornerRadius="14" Padding="4" Margin="35,25,35,35">
            <ProgressBar Style="{StaticResource MaterialDesignCircularProgressBar}" Value="50" IsIndeterminate="True"  Height="Auto" Margin="67,21,67,71" Width="Auto" />
        </materialDesign:Card>
        <Label Content="loading..."  VerticalAlignment="Top" RenderTransformOrigin="0.148,0.504" Margin="77,108,77,0" FontSize="20" Height="34"/>
    </Grid>
</Window>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值