[b]新建PopupDemo页面,代码如下: [/b][u]复制代码[/u] 代码如下:<Grid x:Name="LayoutRoot"> <StackPanel> <Button Content="Show" Click="ShowPopup_Clicked"></Button> </StackPanel> </Grid>后台cs代码为:[u]复制代码[/u] 代码如下:private void ShowPopup_Clicked(object sender, RoutedEventArgs e) { Popup popup = new Popup(); //设置popup的Child属性为自定义的用户控件。 popup.Child = new PopupBorder(); popup.IsOpen = true; }[u]复制代码[/u] 代码如下:popUp.LayoutUpdated += delegate { popUp.Margin = new Thickness( (App.Current.Host.Content.ActualWidth - pborder.ActualWidth) / 2, (App.Current.Host.Content.ActualHeight - pborder.ActualHeight) / 2, 0, 0); };完整的代码如下:[u]复制代码[/u] 代码如下:PopupBorder pborder = new PopupBorder();Popup popUp = new Popup(); //设置popup的Child属性为自定义的用户控件。 popUp.Child = pborder; popUp.LayoutUpdated += delegate { popUp.Margin = new Thickness( (App.Current.Host.Content.ActualWidth - pborder.ActualWidth) / 2, (App.Current.Host.Content.ActualHeight - pborder.ActualHeight) / 2, 0, 0); }; popUp.IsOpen = true;运行可以发现弹出的消息已经居中了,那么如何让它自动消失呢??, 要想自动消失还得使用定时器,过了一段时间后定时器将popUp控件的 IsOpen属性设置为false,这样窗口就关闭了。 于是在LayoutUpdated中增加定时器代码:[u]复制代码[/u] 代码如下:popUp.LayoutUpdated += delegate { popUp.Margin = new Thickness( (App.Current.Host.Content.ActualWidth - pborder.ActualWidth) / 2, (App.Current.Host.Content.ActualHeight - pborder.ActualHeight) / 2, 0, 0); System.Threading.Timer timer = new System.Threading.Timer( (state) => { popUp.Dispatcher.BeginInvoke(() => { popUp.IsOpen = false; }); }, null, 500, 500); };在过了500秒后,将popUp. IsOpen设置为false。 运行可以发现窗口可以自动消失了。 可以看到弹出窗口一下就关闭了,那么能不能慢慢的渐变的消失呢?? 为了实现渐变的消失,那么就应该使用动画了。 首先在PopupBorder中增加[u]复制代码[/u] 代码如下:<UserControl.Resources> <Storyboard x:Name="myStoryboard"> <DoubleAnimation Storyboard.TargetName="LayoutRoot" Storyboard.TargetProperty="Opacity" From="1.0" To="0" Duration="0:0:1" AutoReverse="True" /> </Storyboard> </UserControl.Resources>当然上面的PopupBorder代码中已经有了这段代码了,动画使用了DoubleAnimation,设置LayoutRoot 对象的Opacity属性在1秒的时间内从1,变到0。 接着在PopupDemo页面的按钮事件里面在popUp.Child = pborder;后面增加如下代码来执行动画:[u]复制代码[/u] 代码如下://设置popup的Child属性为自定义的用户控件。 popUp.Child = pborder;pborder.myStoryboard.Completed += delegate { popUp.IsOpen = false; }; pborder.myStoryboard.Begin();然后将Clicked中的代码进行重构。 新建MessageBoxHelper类: 代码如下:[u]复制代码[/u] 代码如下:public class MessageBoxHelper { #region 提示消?息¡é /// <summary> /// 弹出提示消息标题为提示,按钮为确定 /// </summary> /// <param name="msg"></param> public static void ShowMessage(string msg) { //ShowFriendMessage(msg, "提示", MessageBoxButton.OK); PopupBorder pborder = new PopupBorder(); pborder.txtMessage.Text = " " + msg + " "; pborder.UpdateLayout(); Popup popUp = new Popup(); popUp.Child = pborder; pborder.myStoryboard.Completed += delegate { popUp.IsOpen = false; }; pborder.myStoryboard.Begin(); popUp.InvokeOnLayoutUpdated(() => { popUp.Margin = new Thickness( (App.Current.Host.Content.ActualWidth - pborder.ActualWidth) / 2, (App.Current.Host.Content.ActualHeight - pborder.ActualHeight) / 2, 0, 0); System.Threading.Timer timer = new System.Threading.Timer( (state) => { popUp.Dispatcher.BeginInvoke(() => { popUp.IsOpen = false; }); }, null, 500, 500); }); popUp.IsOpen = true; } /// <summary> /// 弹出提示消息按钮为确定 /// </summary> /// <param name="msg"></param> public static void ShowMessage(string msg, string title) { ShowMessage(msg, title, MessageBoxButton.OK); } /// <summary> /// 弹出提示消息 /// </summary> /// <param name="msg"></param> public static void ShowMessage(string msg, string title, MessageBoxButton buttons) { MessageBox.Show(msg, title, buttons); } #endregion }使用的时候只需要MessageBoxHelper.ShowMessage(“Hello World”);就可以了。注意别忘记了PopupBorder控件。
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有