您的位置:首页 > 职场人生

综合应用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐