C# 存储当前用户控件,以便以后删除并添加新控件
我正在尝试将当前活动的用户控件存储在当前正在使用的wpf应用程序中,但是我不确定如何执行此操作 我当前将用户控件加载到我的wpf窗口网格(MainContent)中,如下所示:C# 存储当前用户控件,以便以后删除并添加新控件,c#,wpf,C#,Wpf,我正在尝试将当前活动的用户控件存储在当前正在使用的wpf应用程序中,但是我不确定如何执行此操作 我当前将用户控件加载到我的wpf窗口网格(MainContent)中,如下所示: MyAccount control = new MyAccount(); MainContent.Children.Add(control); 但我需要能够删除当前控件并在其位置添加一个新控件,但是我无法确定如何存储当前正在使用的控件 编辑:只是为了澄清一下,我想将控件名称存储在内存中,以便以后调用MainConten
MyAccount control = new MyAccount();
MainContent.Children.Add(control);
但我需要能够删除当前控件并在其位置添加一个新控件,但是我无法确定如何存储当前正在使用的控件
编辑:只是为了澄清一下,我想将控件名称存储在内存中,以便以后调用
MainContent.Children.Remove(oldcontrol)
我很确定这不是最优雅的解决方案,但它也可以
MyAccount oldControl = null;
foreach (UserControl control in mainContent.Children)
{
if (control.GetType() == typeof(MyAccount))
{
oldControl = (MyAccount)control;
break;
}
}
mainContent.Children.Remove(oldControl);
我很确定这不是最优雅的解决方案,但它也可以
MyAccount oldControl = null;
foreach (UserControl control in mainContent.Children)
{
if (control.GetType() == typeof(MyAccount))
{
oldControl = (MyAccount)control;
break;
}
}
mainContent.Children.Remove(oldControl);
您的问题已经包含了答案-您只需要将控件的名称存储在内存中。只需将它放在函数外的变量名中/放在一个对象中,当您删除控件时,该对象仍然可用,以便您仍然可以引用该变量 也就是说,如果控件的名称始终相同(正如当前选择的答案所暗示的,这表明只有一个MyAccount类型的控件),那么您可能根本不需要变量。您只需告诉控件其名称: 添加具有名称的控件:
MyAccount control = new MyAccount();
control.Name = "myAccountControl";
MainContent.Children.Add(control);
按名称删除:
MainContent.Children.RemoveByKey("myAccountControl");
这应该比上面的代码更有效,也就是说,如果给定类型的控件不止一个,那么只删除您感兴趣的一个,而不是该类型的所有控件(或者给定break语句,无论哪个控件恰好是该类型的第一个)
您的问题已包含答案-只需将控件名称存储在内存中即可。只需将它放在函数外的变量名中/放在一个对象中,当您删除控件时,该对象仍然可用,以便您仍然可以引用该变量 也就是说,如果控件的名称始终相同(正如当前选择的答案所暗示的,这表明只有一个MyAccount类型的控件),那么您可能根本不需要变量。您只需告诉控件其名称: 添加具有名称的控件:
MyAccount control = new MyAccount();
control.Name = "myAccountControl";
MainContent.Children.Add(control);
按名称删除:
MainContent.Children.RemoveByKey("myAccountControl");
这应该比上面的代码更有效,也就是说,如果给定类型的控件不止一个,那么只删除您感兴趣的一个,而不是该类型的所有控件(或者给定break语句,无论哪个控件恰好是该类型的第一个)
在“存储”控件中,您是指将其保存到物理位置(文件、数据库…等)还是内存中?@Fahad我是指将其存储到内存中,以便以后可以使用
MainContent.Children.Remove(oldcontrol)
。在“存储”控件中,您是指将其保存到物理位置(文件、数据库…等)或者在内存中?@Fahad我的意思是将其存储在内存中,以便我以后可以使用MainContent.Children.Remove(oldcontrol)
。我以前使用过Fahad的答案,但后来我意识到如何用更好的方式来做(这与你的答案:P完全相同)。我以前使用过Fahad的答案,但后来我意识到如何用更好的方式来做(这与你的答案完全相同:P)。