说明:通过学习子窗体的各项特性,您将了解到子窗体的基本使用方法。通过学习实例,应当重点掌握子窗体与父窗体的数据通讯。
组件所在命名空间:
System.Windows.Controls
组件常用属性:
DialogResult:获取或者设置一个值用来显示子窗体的反馈内容是否被接受或是取消。
HasCloseButton:获取或者设置一个值用来显示子窗体是否包含关闭按钮。
OverlayBrush:获取或者设置被用于当子窗体打开时覆盖在父窗体上的遮盖层的笔刷。
OverlayOpacity:获取或者设置被用于当子窗体打开时覆盖在父窗体上的遮盖层的笔刷的透明度。
Title:获取或者设置子窗体的窗口标题。
组件常用事件:
Closed:当子窗体关闭后发生。
Closing:当子窗体正在关闭时发生。
组件常用方法:
Close:关闭子窗体。
Show:打开子窗体并返回而不等待该子窗体关闭
实例:
效果图:

代码段:
MainPage.xaml代码:(由Microsoft Expression Blend 3设计)
MainPage.xaml.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ChildWindow.controls;//引入设计的子窗体所在的命名空间
namespace ChildWindow
{
public partial class MainPage : UserControl
{
//定义子窗口
ChildWindowDemo cw = new ChildWindowDemo();
public MainPage()
{
InitializeComponent();
//注册事件触发处理
this.btnOpenChildwindow.Click += new RoutedEventHandler(btnOpenChildwindow_Click);
this.cw.Closed += new EventHandler(cw_Closed);
}
void cw_Closed(object sender, EventArgs e)
{
if (cw.DialogResult == true)
{
try
{
tbResult.Text = "雇员号:" + Convert.ToString(cw.returnEM.EmployeeID) + "\n雇员姓名:" + cw.returnEM.EmployeeName + "\n雇员年龄:" + Convert.ToString(cw.returnEM.EmployeeAge);
SolidColorBrush scb = new SolidColorBrush();
switch (cw.returnColor)
{
case "Red":
scb.Color = Colors.Red;
break;
case "Blue":
scb.Color = Colors.Blue;
break;
case "Yellow":
scb.Color = Colors.Yellow;
break;
case "Green":
scb.Color = Colors.Green;
break;
case "Black":
scb.Color = Colors.Black;
break;
}
rtBox.Fill = scb;
}
catch
{ }
}
}
void btnOpenChildwindow_Click(object sender, RoutedEventArgs e)
{
if (tbChilewindowTitle.Text != String.Empty)
{
cw.Title = tbChilewindowTitle.Text;//设置子窗体标题
}
if (cbHasCloseButton.IsChecked == true)//设置子窗体是否含有关闭按钮
{
cw.HasCloseButton = true;
}
else
{
cw.HasCloseButton = false;
}
cw.Show();//显示子窗体
}
}
}
ChildWindowDemo.xaml代码:
ChildWindowDemo.xaml.cs代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace ChildWindow.controls
{
//定义数据类
public class Employees
{
public int EmployeeID { get; set; }
public string EmployeeName { get; set; }
public int EmployeeAge { get; set; }
public Employees()
{ }
public Employees(int employeeid, string employeename, int employeeage)
{
EmployeeID = employeeid;
EmployeeName = employeename;
EmployeeAge = employeeage;
}
}
public partial class ChildWindowDemo : System.Windows.Controls.ChildWindow
{
//全局变量声明
private List
public Employees returnEM = new Employees();//传回父窗体的变量1
public string returnColor;//传回父窗体的变量2
{
InitializeComponent();
this.dgEmployee.HeadersVisibility = DataGridHeadersVisibility.All;//同时显示DataGrid的行头与列头
//注册事件触发处理
this.Loaded += new RoutedEventHandler(ChildWindowDemo_Loaded);
this.dgEmployee.CurrentCellChanged += new EventHandler
this.cbColor.SelectionChanged += new SelectionChangedEventHandler(cbColor_SelectionChanged);
this.OverlayBrush = new SolidColorBrush(Colors.Cyan);
this.OverlayOpacity = 0.5;
}
void cbColor_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbColor.SelectedItem != null)
{
returnColor = ((ComboBoxItem)cbColor.SelectedItem).Content.ToString();
}
}
void dgEmployee_CurrentCellChanged(object sender, EventArgs e)
{
returnEM = (Employees)dgEmployee.SelectedItem;
}
void ChildWindowDemo_Loaded(object sender, RoutedEventArgs e)
{
em.Clear();
em.Add(new Employees(1, "张三", 23));
em.Add(new Employees(2, "李四", 24));
em.Add(new Employees(3, "王五", 25));
dgEmployee.ItemsSource = em;
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
{
this.DialogResult = false;
}
}
}