我正在使用一个父窗口和多个子用户控件开发WPF应用程序。这是我的父窗口xaml:
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="STUDENT INFORMATION">
<MenuItem Header="ADD" Cursor="Hand" Click="MenuItem_Click"></MenuItem>
<Separator></Separator>
<MenuItem Header="EDIT" Name="mnuEdit" Cursor="Hand" Click="mnuEdit_Click"></MenuItem>
</MenuItem>
</Menu>
<ContentControl x:Name="childWindow" Margin="10"></ContentControl>
</DockPanel>
这是我打开子表单的C#代码:
childWindow.Content = new ctrStudentAdd();
工作正常。但是,当我点击添加菜单项时,我该怎么做:
提前致谢。
答案 0 :(得分:1)
您可以使用is
运算符来确定Content属性当前是否设置为ctrStudentAdd
:
if(childWindow.Content is ctrStudentAdd)
{
//...
}
我注意到你的意思是“带到前面”。一旦将ContentControl的Content属性设置为另一个UC,对前一个UC的引用就会消失,“旧”UC有资格进行垃圾回收,除非有其他对象持有对它的引用。
如果您不希望每次在ContentControl中显示UserControl的新实例,您可以在窗口类中保留对它的引用,例如:
public partial class MainWindow : Window
{
private readonly ctrStudentAdd _ctrStudentAdd = new ctrStudentAdd();
private readonly ctrStudentEdit _ctrStudentEdit = new ctrStudentEdit();
public MainWindow()
{
InitializeComponent();
}
private void Switch()
{
childWindow.Content = _ctrStudentAdd;
...
childWindow.Content = _ctrStudentEdit;
}
}