在实际应用中,我们有时候的确需要弹出一个自定义的模态窗口。为此,我们可以采用Popup控件的方法来接近这个需求,当然,这里的“模态窗口”并不是真的窗口。
为了方便大家学习,请 单击此处 下载该程序的代码。
首先,我们为Page中的Grid命名,然后添加一些测试控件txtSource和button1。
然后,我们可以添加一个Popup控件,用于显示“模态窗口”的内容。页面代码如下:
我们需要达到的效果有以下几个方面:
1、实现“弹出窗口”的效果。
2、“模态窗口”的效果,即“弹出窗口”后,其它控件均不能使用;“关闭窗口”后,其它控件均恢复使用。
3、主窗口和“模态窗口”进行数据交换。
为此编写代码如下。我们采用遍历grdGrid的子控件,并设置其IsEnabled属性为false的方法达到“模态”的效果。
为了方便大家学习,请 单击此处 下载该程序的代码。
首先,我们为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,如需转载请自行联系原作者