[英]Bring to front previously opened UserControl
我正在開發具有一個父窗口和多個子用戶控件的 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();
它工作正常。 但是當我點擊添加菜單項時,我該如何:
提前致謝。
您可以使用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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.