我正在尝试将当前活动的用户控件存储在我当前正在使用的wpf应用程序中,但是我不确定如何这样做。
我目前将用户控件加载到我的wpf窗口网格(MainContent)中,如下所示:
MyAccount control = new MyAccount();
MainContent.Children.Add(control);
但是我需要能够移除当前控件并添加一个新控件,但是我无法确定如何存储当前使用的控件。
修改:为了澄清,我想将控件名称存储在内存中,以便稍后调用MainContent.Children.Remove(oldcontrol)
。
答案 0 :(得分:2)
您的问题已包含答案 - 您只需将控件的名称存储在内存中即可。只需将它放在函数/函数外部的变量名中,当你移除控件时它仍然可用,这样你仍然可以引用该变量。
也就是说,如果控件的名称始终相同(如当前所选答案所暗示的那样,表明只有一个MyAccount类型的控件),则可能根本不需要变量。您只需要告诉控件它的名称是什么:
使用名称添加控件:
MyAccount control = new MyAccount();
control.Name = "myAccountControl";
MainContent.Children.Add(control);
按名称删除:
MainContent.Children.RemoveByKey("myAccountControl");
这应该比上面的代码更有效,并且意味着如果你有一个给定类型的多个控件,你只删除你感兴趣的那个 - 而不是那个类型的所有控件(或者给出break语句,无论哪种控制都是第一种类型。)
答案 1 :(得分:1)
我很确定这不是最优雅的解决方案,但可能会这样做
MyAccount oldControl = null;
foreach (UserControl control in mainContent.Children)
{
if (control.GetType() == typeof(MyAccount))
{
oldControl = (MyAccount)control;
break;
}
}
mainContent.Children.Remove(oldControl);