早晨看到 jv9 兄的《Silverlight子窗口(ChildWindow)传递参数到父窗口演示》一文。和自己的想法稍有不同,在些写出请大家指正。
我的想法是直接使用弹出窗口的Closed事件
1. 弹出窗口代码
我们让窗口在点击OKButton按钮后返回当前时间


1 public partial class testChildWindow : ChildWindow
2 {
3 public string testString { get; set; }
4 public testChildWindow()
5 {
6 InitializeComponent();
7 }
8
9 private void OKButton_Click(object sender, RoutedEventArgs e)
10 {
11 testString = DateTime.Now.ToString();
12 this.DialogResult = true;
13 }
14
15 private void CancelButton_Click(object sender, RoutedEventArgs e)
16 {
17 this.DialogResult = false;
18 }
19 }
2. 弹出窗口并返回值


1 testChildWindow tc = new testChildWindow(); //实例化弹出窗口
2 public SilverlightControl1()
3 {
4 InitializeComponent();
5 tc.Closed += new EventHandler(tc_Closed); //弹出窗口的关闭事件
6 this.Loaded += new RoutedEventHandler(SilverlightControl1_Loaded);
7 }
8
9 void SilverlightControl1_Loaded(object sender, RoutedEventArgs e)
10 {
11 tc.Show(); //弹出窗口
12 }
13
14 void tc_Closed(object sender, EventArgs e)
15 {
16 string val = tc.testString;//返回的值
17 }
3. 使用技巧


1 void tc_Closed(object sender, EventArgs e)
2 {
3 //当弹出窗口的DialogResult为真是,才弹出消息
4 //如:在弹出窗口点击 OKButton按钮时弹出消息
5 // 而用户点击CancelButton按钮或点击了窗口关闭小杈时,不做响应
6 if ((bool)tc.DialogResult)
7 MessageBox.Show(tc.testString);
8 }