综合应用WPF/WCF/WF/LINQ之三十四:在XBAP项目中模拟弹出一个自定义的“模态窗口”
2008-01-23 16:25
666 查看
在实际应用中,我们有时候的确需要弹出一个自定义的模态窗口。为此,我们可以采用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 }
附件:http://down.51cto.com/data/2350000
为了方便大家学习,请单击此处下载该程序的代码。
首先,我们为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 }
附件:http://down.51cto.com/data/2350000
相关文章推荐
- 综合应用WPF/WCF/WF/LINQ之三十三:XBAP项目中打开和关闭新的窗口
- 综合应用WPF/WCF/WF/LINQ之二十四:使用UserControl技术编写一个翻页控件
- 综合应用WPF/WCF/WF/LINQ之三十八:实现一个简单的DataGrid之总体介绍
- 综合应用WPF/WCF/WF/LINQ之三十九:实现一个简单的DataGrid之获取某格的原始(或当前)行(或列)的Index
- 综合应用WPF/WCF/WF/LINQ之四:创建一个StateMachineWorkflow 推荐
- 综合应用WPF/WCF/WF/LINQ之四十:实现一个简单的DataGrid之CheckBox已勾选的项的保存
- 综合应用WPF/WCF/WF/LINQ之三十六:实现一个完全封装的SortableListView控件
- 综合应用WPF/WCF/WF/LINQ之十六:关于更改XBAP程序的配置文件的问题
- 综合应用WPF/WCF/WF/LINQ之二十五:使用CustomControl技术编写一个翻页控件
- 综合应用WPF/WCF/WF/LINQ之一:DEV-WOW 作品源代码公布
- 综合应用WPF/WCF/WF/LINQ之二十九:代码生成器之DBMLToCode
- 综合应用WPF/WCF/WF/LINQ之三:采用用代码创建的方式实现CheckListBox的CustomControl
- 综合应用WPF/WCF/WF/LINQ之二十二:关于单步调试存储过程的问题
- 综合应用WPF/WCF/WF/LINQ之三十:代码生成器之DBMLToDAL
- 综合应用WPF/WCF/WF/LINQ之三十五:解决CheckListBox控件中选择项丢失的问题
- 综合应用WPF/WCF/WF/LINQ系列博客目录导航
- 综合应用WPF/WCF/WF/LINQ之十四:LINQ的ORM功能的代码简化能力
- 综合应用WPF/WCF/WF/LINQ之十:界面开发人员的Solution
- 综合应用WPF/WCF/WF/LINQ之三十一:代码生成器之ContractToBLL
- 综合应用WPF/WCF/WF/LINQ之十七:关于简化发布新版本的步骤的问题