综合应用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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
设计模式 前端开发 C#
WPF 项目中 MVVM模式 的简单例子说明
本文通过WPF项目中的加法操作示例,讲解了MVVM模式的结构和实现方法,包括数据模型、视图、视图模型的创建和数据绑定,以及命令的实现和事件通知机制。
|
3月前
|
持续交付 C# 敏捷开发
“敏捷之道:揭秘WPF项目中的快速迭代与持续交付——从需求管理到自动化测试,打造高效开发流程的全方位指南”
【8月更文挑战第31天】敏捷开发是一种注重快速迭代和持续交付的软件开发方法,通过短周期开发提高产品质量并快速响应变化。本文通过问题解答形式,探讨在Windows Presentation Foundation(WPF)项目中应用敏捷开发的最佳实践,涵盖需求管理、版本控制、自动化测试及持续集成等方面,并通过具体示例代码展示其实施过程,帮助团队提升代码质量和开发效率。
72 0
|
3月前
|
C# 开发者 Windows
勇敢迈出第一步:手把手教你如何在WPF开源项目中贡献你的第一行代码,从选择项目到提交PR的全过程解析与实战技巧分享
【8月更文挑战第31天】本文指导您如何在Windows Presentation Foundation(WPF)相关的开源项目中贡献代码。无论您是初学者还是有经验的开发者,参与这类项目都能加深对WPF框架的理解并拓展职业履历。文章推荐了一些适合入门的项目如MvvmLight和MahApps.Metro,并详细介绍了从选择项目、设置开发环境到提交代码的全过程。通过具体示例,如添加按钮点击事件处理程序,帮助您迈出第一步。此外,还强调了提交Pull Request时保持专业沟通的重要性。参与开源不仅能提升技能,还能促进社区交流。
44 0
|
3月前
|
C# Windows 开发者
超越选择焦虑:深入解析WinForms、WPF与UWP——谁才是打造顶级.NET桌面应用的终极利器?从开发效率到视觉享受,全面解读三大框架优劣,助你精准匹配项目需求,构建完美桌面应用生态系统
【8月更文挑战第31天】.NET框架为开发者提供了多种桌面应用开发选项,包括WinForms、WPF和UWP。WinForms简单易用,适合快速开发基本应用;WPF提供强大的UI设计工具和丰富的视觉体验,支持XAML,易于实现复杂布局;UWP专为Windows 10设计,支持多设备,充分利用现代硬件特性。本文通过示例代码详细介绍这三种框架的特点,帮助读者根据项目需求做出明智选择。以下是各框架的简单示例代码,便于理解其基本用法。
161 0
|
XML 存储 数据可视化
能快速构建和定制网络拓扑图的WPF开源项目-NodeNetwork
在现代软件开发中,数据可视化和可交互性越来越受到关注。为了实现这一点,通常需要使用各种图表、表格、网络拓扑图等控件。NodeNetwork就是一种这样的自定义方式,它是一个基于C# WPF的开源项目,可以帮助我们快速构建和定制网络拓扑图。
能快速构建和定制网络拓扑图的WPF开源项目-NodeNetwork
WPF项目获取代码行数
WPF项目获取代码行数
WPF项目获取代码行数
WPF项目中不支持 ResizingPanel,未在类型“ResizingPanel”中找到可附加的属性“ResizeWidth”
WPF项目中不支持 ResizingPanel,未在类型“ResizingPanel”中找到可附加的属性“ResizeWidth”
WCF基础教程(四)——数据契约实现传送自定义数据类型
WCF基础教程(四)——数据契约实现传送自定义数据类型
119 0
|
C#
WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary)
原文:WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary) 在文件夹或者项目右键-> Add(添加),会弹出可以快捷添加的资源,但是你会发现没有 ResourceDictionary资源可以选择。
3998 0
|
关系型数据库 MySQL 数据库连接
C#连接Mysql数据库,我的第一个wpf项目记录
C#连接Mysql数据库,我的第一个wpf项目记录
C#连接Mysql数据库,我的第一个wpf项目记录