综合应用WPF/WCF/WF/LINQ之三十四:在XBAP项目中模拟弹出一个自定义的“模态窗口”

简介:
在实际应用中,我们有时候的确需要弹出一个自定义的模态窗口。为此,我们可以采用Popup控件的方法来接近这个需求,当然,这里的“模态窗口”并不是真的窗口。
  为了方便大家学习,请 单击此处 下载该程序的代码。
  首先,我们为Page中的Grid命名,然后添加一些测试控件txtSource和button1。
  然后,我们可以添加一个Popup控件,用于显示“模态窗口”的内容。页面代码如下:
    1       < Grid  Name ="grdGrid">
    2           < Button  Height ="23"  Margin ="0,30,12,0"  Name ="button1"  VerticalAlignment ="Top"  Click ="button1_Click"  HorizontalAlignment ="Right"  Width ="75"> Button </ Button >
    3           < TextBox  Name ="txtSource"  Height ="21"  HorizontalAlignment ="Left"  Margin ="28,32,0,0" VerticalAlignment ="Top"  Width ="120" />
    4           < Popup  Name ="popup1"  Width ="300"  Height ="100">
    5               < Grid  Background ="Red">
    6                   < TextBox  Name ="txtTarget"  Height ="21"  Width ="100"  Margin ="0,30,150,0" />
    7                   < Button  Name ="btnClose"  Content ="Close"  Height ="21"  Width ="75"  Margin ="28,32,0,0"  Click ="btnClose_Click" />
    8               </ Grid >
    9           </ Popup >
   10       </ Grid >
  我们需要达到的效果有以下几个方面:
  1、实现“弹出窗口”的效果。
  2、“模态窗口”的效果,即“弹出窗口”后,其它控件均不能使用;“关闭窗口”后,其它控件均恢复使用。
  3、主窗口和“模态窗口”进行数据交换。
  为此编写代码如下。我们采用遍历grdGrid的子控件,并设置其IsEnabled属性为false的方法达到“模态”的效果。
    1      private  void button1_Click( object sender,  RoutedEventArgs e)
    2     {
    3          this.popup1.IsOpen =  true;
    4 
    5          this.txtTarget.Text =  this.txtSource.Text;
    6 
    7          foreach ( UIElement element  in  this.grdGrid.Children)
    8         {
    9             element.IsEnabled =  false;
   10         }
   11     }
   12 
   13      private  void btnClose_Click( object sender,  RoutedEventArgs e)
   14     {
   15          this.popup1.IsOpen =  false;
   16 
   17          this.txtSource.Text =  this.txtTarget.Text;
   18 
   19          foreach ( UIElement element  in  this.grdGrid.Children)
   20         {
   21             element.IsEnabled =  true;
   22         }
   23     }




本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/79001,如需转载请自行联系原作者
目录
相关文章
|
C# 虚拟化 索引
【WPF】UI虚拟化之------自定义VirtualizingWrapPanel
原文:【WPF】UI虚拟化之------自定义VirtualizingWrapPanel 前言 前几天QA报了一个关于OOM的bug,在排查的过程中发现,ListBox控件中被塞入了过多的Item,而ListBox又定义了两种样式的ItemsPanelTemplate。
2023 0
|
C# 数据安全/隐私保护
【WPF】右下角弹出自定义通知样式(Notification)——简单教程
原文:【WPF】右下角弹出自定义通知样式(Notification)——简单教程 1.先看效果 2.实现 1.主界面是MainWindow 上面就只摆放一个Button即可。
2811 0
|
9月前
|
开发工具 Windows
[项目基础]WCF初识小结
Windows通信基础(Windows Communication Foundation,WCF)是基于windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK)。
|
前端开发 C# 图形学
【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示
Wpf开发过程中,最经常使用的功能之一,就是用户控件(UserControl)了。用户控件可以用于开发用户自己的控件进行使用,甚至可以用于打造一套属于自己的UI框架。依赖属性(DependencyProperty)是为用户控件提供可支持双向绑定的必备技巧之一,同样用处也非常广泛。
783 0
【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示
|
C#
WPF 控件自定义背景
<!--控件要设置尺寸的话,设置的尺寸必须比下面的图形的尺寸要小,不然显示不开--> <Label Content="直角测试" Width="90" Height="90" HorizontalContentAlignment="Center" Vert...
984 0
|
C#
WPF开发-Label自定义背景-Decorator
首先在App.xaml文件当中添加样式和模板
1957 0
|
C#
wpf 开发 -TextBox背景自定义-Decorator
首先在app.xaml文件的下面添加以下样式
1630 0
|
C# 前端开发
【C#】wpf自定义calendar日期选择控件的样式
原文:【C#】wpf自定义calendar日期选择控件的样式 首先上图看下样式 原理 总览 ItemsControl内容的生成 实现 界面的实现 后台ViewModel的实现 首先上图,看下样式 原理 1. 总览: Calendar本质上是一个6x7的列表,这个列表可以用ItemsControl来实现。
1088 0
|
C# C++ 数据可视化
WPF Calendar 日历控件 样式自定义
原文:WPF Calendar 日历控件 样式自定义 粗略的在代码上做了些注释 blend 生成出来的模版 有的时候 会生成 跟 vs ui界面不兼容的代码 会导致可视化设计界面 报错崩溃掉 但是确不影响 程序的编译运行 这个样式表 在vs 里会提示动画不兼容 Foreground属性 报错 ...
1694 1
|
C# Windows
WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配
原文:WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 WPF Toolkit AutoCompleteBox 实体类绑定 关键字自定义关联搜索匹配 网上的例子都是零散的   翻阅了 很多篇文章后 再根据 自己项目的实际需求  整理出一个完整的 应用例子...
1060 0