在我的WPF应用程序中,我有一个表,用于存储每个用户经常使用的窗口名称。在runtiime,我列出了它。
List<string> LstUserWindows= new List<string>();
我需要的是我需要打开每个窗口,具体取决于列表中窗口的名称。 (我使用usercontrols作为窗口)。如下所示:
foreach (var rec in LstUserWindows)
{
UserControl mainUC = this.FindName(rec.MyWindow) as UserControl;
displayUserControls(mainUC,null);
}
答案 0 :(得分:1)
我不确定您目前在存储UserControl
个实例时采用了哪种方法,但这里有两种可能的方法。
如果您的用户界面中已经存在所有UserControl
个实例但只是隐藏了,那么您应该可以使用FindName(...)
(正如您在问题中提到的那样)然后更改Visibility
。{/ p>
UserControl
属性
如果您尚未加载UserControl
个实例并且想要动态创建控件名称,那么您需要查看使用Reflection。使用此方法,您可以从Type
获取Assembly
信息,并使用Reflection构建对象。或者,您可以使用Activator
类来构造所需控件类型的实例。对于这种方法,你会做这样的事情。
foreach (var rec in LstUserWindows)
{
UserControl control = (UserControl)System.Activator.CreateInstance("AssemblyName", rec);
displayUserControls(control, null);
}
注意:我不确定参数结构是否正确(我目前无法测试)。查看MSDN Documentation以获取更多帮助。